heat-dashboard/heat_dashboard/static/dashboard/project/heat_dashboard/template_generator/js/components/utils.module.js

234 lines
9.3 KiB
JavaScript

(function() {
'use strict';
angular.module('hotgen-utils', ['cgNotify', 'angular-uuid', 'ngVis'])
.factory('hotgenUUID', ['uuid', function(uuid) {
return {
uuid: uuid.v4,
};
}])
.factory('hotgenNotify', ['notify', '$rootScope', function(notify, $rootScope) {
notify.config({
position: 'right',
duration: 0,
});
var show_success = function(message) {
if ($rootScope.message_level < 2){
return -1;
}
notify({
message: message,
classes: ['alert-success',],
duration: 3000,
});
return 0;
};
var show_error = function(message) {
if ($rootScope.message_level < 0){
return -1;
}
notify({
message: message,
classes: ['alert-danger',],
// duration: 5000,
});
return 0;
};
var show_info = function(message) {
if ($rootScope.message_level < 3){
return -1;
}
notify({
message: message,
classes: ['alert-info',],
duration: 3000,
});
return 0;
};
var show_warning = function(message) {
if ($rootScope.message_level < 1){
return -1;
}
notify({
message: message,
classes: ['alert-warning',],
duration: 5000,
});
return 0;
};
return {
show_success: show_success,
show_error: show_error,
show_info: show_info,
show_warning: show_warning
};
}])
.factory('hotgenMessage', ['$rootScope', function($rootScope){
var broadcast_edit_node = function(node_type){
$rootScope.$broadcast('handle_edit_node', node_type);
};
var broadcast_edit_edge = function(from_type, to_type, from_id, to_id){
$rootScope.$broadcast('handle_edit_edge',{
'from_type': from_type, 'to_type': to_type,
'from_id': from_id, 'to_id': to_id,
});
};
var broadcast_load_draft = function(){
$rootScope.$broadcast('handle_load_draft');
};
var broadcast_resources_loaded = function(){
$rootScope.$broadcast('handle_resources_loaded');
};
var broadcast_update_template_version = function(){
$rootScope.$broadcast('update_template_version');
};
return {
broadcast_edit_node: broadcast_edit_node,
broadcast_edit_edge: broadcast_edit_edge,
broadcast_load_draft: broadcast_load_draft,
broadcast_resources_loaded: broadcast_resources_loaded,
broadcast_update_template_version: broadcast_update_template_version,
}
}])
.factory('hotgenUtils', function(){
var get_resource_string = function(identity){
return '{ get_resource: '+identity+' }';
}
var filter_and_return_get_resource_element = function(array, property){
var return_val = [];
var idx = array.length-1;
while (idx >= 0) {
if (typeof array[idx] == 'string'){
if (array[idx].indexOf('get_resource') != -1){
return_val = return_val.concat(array.splice(idx, 1))
}
} else if (typeof array[idx] == 'object' && property){
if (array[idx][property] && array[idx][property].indexOf('get_resource') != -1){
return_val = return_val.concat(array.splice(idx, 1))
}
}
idx = idx-1;
}
return return_val;
}
var escape_characters = function(value){
return '"'+value.replace(/\\/g, '\\\\')
.replace(/"/g, '\\"')
.replace(/\n/g, "\\n")+'"';
}
var extract_keyvalue = function(value){
var new_keyvalue = {}
if (value instanceof Array ){
for (var idx in value){
if (value[idx] instanceof Object ){
if (Object.keys(value[idx]).length == 0){
continue;
}
new_keyvalue[value[idx].key] = value[idx].value
}
}
}
if (Object.keys(new_keyvalue).length == 0){
return null;
}
return new_keyvalue;
}
var extract_list_of_keyvalue = function(value_list){
if (value_list instanceof Array ){
for (var idx=value_list.length-1; idx>=0; --idx){
if (Object.keys(value_list[idx]).length == 0){
value_list.splice(idx, 1)
}
}
if (value_list.length == 0){
return null;
}
return value_list
}
return null;
}
var extract_list = function(value_list){
if (value_list instanceof Array){
if (value_list.length == 0){
return null;
}
return value_list
}
return null;
}
var extract_dicts = function check_dicts(value_dict){
for (var key in value_dict){
if (! value_dict[key]){
delete value_dict[key];
}
}
return value_dict
}
var extract_dict = function extract_dict(value_dict){
for (var key in value_dict){
strip_property(value_dict, key)
}
}
var extract_array = function extract_array(value_list){
for (var idx=value_list.length-1; idx>=0; --idx){
if (value_list[idx] == null || value_list[idx] == ''){
value_list.splice(idx, 1)
} else if (value_list[idx].constructor && value_list[idx].constructor == Object){
extract_dict(value_list[idx])
if (Object.keys(value_list[idx]).length == 0){
value_list.splice(idx, 1);
}
} else if (value_list[idx].constructor && value_list[idx].constructor == Array){
extract_array(value_list[idx])
if (value_list[idx].length == 0){
value_list.splice(idx, 1);
}
}
}
}
var extract_resource_def = function extract_resource_def(value_dict){
if (value_dict.properties){
value_dict.properties = extract_keyvalue(value_dict.properties)
}
if (value_dict.metadata){
value_dict.metadata = extract_keyvalue(value_dict.metadata)
}
return value_dict
}
var strip_property = function check_property(resource_data, property){
if (resource_data[property] == null || resource_data[property] == ''){
delete resource_data[property];
} else if (resource_data[property].constructor && resource_data[property].constructor == Object){
extract_dict(resource_data[property]);
if (Object.keys(resource_data[property]).length == 0){
delete resource_data[property];
}
} else if (resource_data[property].constructor && resource_data[property].constructor == Array){
extract_array(resource_data[property]);
if (resource_data[property].length == 0){
delete resource_data[property];
}
}
}
return {
get_resource_string: get_resource_string,
escape_characters: escape_characters,
extract_keyvalue: extract_keyvalue,
extract_list_of_keyvalue: extract_list_of_keyvalue,
extract_list: extract_list,
extract_dicts: extract_dicts,
extract_resource_def: extract_resource_def,
filter_and_return_get_resource_element: filter_and_return_get_resource_element,
strip_property: strip_property,
};
})
})();