src/pyams_skin/resources/js/myams.js
changeset 547 9fe15f541572
parent 542 a6d37768ab8f
child 553 644d0f6f6503
equal deleted inserted replaced
546:9f02c09d2393 547:9fe15f541572
  1945 
  1945 
  1946 										   function _submitAjaxForm(form, options) {
  1946 										   function _submitAjaxForm(form, options) {
  1947 
  1947 
  1948 											   var button,
  1948 											   var button,
  1949 												   buttonData,
  1949 												   buttonData,
  1950 												   buttonTarget;
  1950 												   buttonTarget,
  1951 											   var data = form.data();
  1951 												   data = form.data(),
  1952 											   var formOptions = data.amsFormOptions;
  1952 												   formOptions = data.amsFormOptions,
  1953 											   var formData;
  1953 												   formData,
  1954 											   var formDataCallback;
  1954 												   formDataCallback;
  1955 
  1955 
  1956 											   var progressHandler;
  1956 											   var progressHandler,
  1957 											   var progressInterval;
  1957 												   progressInterval,
  1958 											   var progressCallback;
  1958 												   progressCallback,
  1959 											   var progressEndCallback;
  1959 												   progressEndCallback;
  1960 
  1960 
  1961 											   // Inner progress status handler
  1961 											   // Inner progress status handler
  1962 											   function _getProgress(handler, progress_id) {
  1962 											   function _getProgress(handler, progress_id) {
  1963 
  1963 
  1964 												   var timeout;
  1964 												   var timeout;
  2127 													   success: function(result, status, request, form) {
  2127 													   success: function(result, status, request, form) {
  2128 														   var modal = $(form).parents('.modal-dialog');
  2128 														   var modal = $(form).parents('.modal-dialog');
  2129 														   if (modal.exists()) {
  2129 														   if (modal.exists()) {
  2130 															   ams.dialog && ams.dialog.close(form);
  2130 															   ams.dialog && ams.dialog.close(form);
  2131 														   } else {
  2131 														   } else {
  2132 															   var callback;
  2132 															   var callback,
  2133 															   var button = form.data('ams-submit-button');
  2133 																   button = form.data('ams-submit-button');
  2134 															   if (button) {
  2134 															   if (button) {
  2135 																   callback = button.data('ams-form-submit-callback');
  2135 																   callback = button.data('ams-form-submit-callback');
  2136 															   }
  2136 															   }
  2137 															   if (!callback) {
  2137 															   if (!callback) {
  2138 																   callback = ams.getFunctionByName(data.amsFormSubmitCallback) || ams.form._submitCallback;
  2138 																   callback = ams.getFunctionByName(data.amsFormSubmitCallback) || ams.form._submitCallback;
  2226 		 * @param this: the submitted form
  2226 		 * @param this: the submitted form
  2227 		 * @param target: the form submit container target
  2227 		 * @param target: the form submit container target
  2228 		 * @param message: the optional message
  2228 		 * @param message: the optional message
  2229 		 */
  2229 		 */
  2230 		initSubmit: function(target, message) {
  2230 		initSubmit: function(target, message) {
  2231 			var form = $(this);
  2231 			var form = $(this),
  2232 			var spin = '<i class="fa fa-3x fa-gear fa-spin"></i>';
  2232 				spin = '<i class="fa fa-3x fa-gear fa-spin"></i>';
  2233 			if (!message) {
  2233 			if (!message) {
  2234 				message = form.data('ams-form-submit-message');
  2234 				message = form.data('ams-form-submit-message');
  2235 			}
  2235 			}
  2236 			if (message) {
  2236 			if (message) {
  2237 				spin += '<strong>' + message + '</strong>';
  2237 				spin += '<strong>' + message + '</strong>';
  2273 		 *
  2273 		 *
  2274 		 * @param this: the submitted form
  2274 		 * @param this: the submitted form
  2275 		 * @param message: the optional submit message
  2275 		 * @param message: the optional submit message
  2276 		 */
  2276 		 */
  2277 		initSubmitFooter: function(message) {
  2277 		initSubmitFooter: function(message) {
  2278 			var form = $(this);
  2278 			var form = $(this),
  2279 			var spin = '<i class="fa fa-3x fa-gear fa-spin"></i>';
  2279 				spin = '<i class="fa fa-3x fa-gear fa-spin"></i>';
  2280 			if (!message) {
  2280 			if (!message) {
  2281 				message = $(this).data('ams-form-submit-message');
  2281 				message = $(this).data('ams-form-submit-message');
  2282 			}
  2282 			}
  2283 			if (message) {
  2283 			if (message) {
  2284 				spin += '<strong class="submit-message align-top padding-left-10 margin-top-10">' + message + '</strong>';
  2284 				spin += '<strong class="submit-message align-top padding-left-10 margin-top-10">' + message + '</strong>';
  2293 		 *
  2293 		 *
  2294 		 * @param this: the submitted form
  2294 		 * @param this: the submitted form
  2295 		 * @param target: the form submit container target
  2295 		 * @param target: the form submit container target
  2296 		 */
  2296 		 */
  2297 		finalizeSubmitFooter: function(/*target*/) {
  2297 		finalizeSubmitFooter: function(/*target*/) {
  2298 			var form = $(this);
  2298 			var form = $(this),
  2299 			var footer = $('footer', form);
  2299 				footer = $('footer', form);
  2300 			if (footer) {
  2300 			if (footer) {
  2301 				$('.row', footer).remove();
  2301 				$('.row', footer).remove();
  2302 				$('button', footer).show();
  2302 				$('button', footer).show();
  2303 			}
  2303 			}
  2304 		},
  2304 		},
  2329 				if (button) {
  2329 				if (button) {
  2330 					button.button('reset');
  2330 					button.button('reset');
  2331 				}
  2331 				}
  2332 			}
  2332 			}
  2333 
  2333 
  2334 			var data = form.data();
  2334 			var data = form.data(),
  2335 			var dataType;
  2335 				dataType;
  2336 			if (data.amsFormDatatype) {
  2336 			if (data.amsFormDatatype) {
  2337 				dataType = data.amsFormDatatype;
  2337 				dataType = data.amsFormDatatype;
  2338 			} else {
  2338 			} else {
  2339 				var response = ams.ajax && ams.ajax.getResponse(request);
  2339 				var response = ams.ajax && ams.ajax.getResponse(request);
  2340 				if (response) {
  2340 				if (response) {
  2414 		_checkSubmitValidators: function(form) {
  2414 		_checkSubmitValidators: function(form) {
  2415 			var validators = ams.form._getSubmitValidators(form);
  2415 			var validators = ams.form._getSubmitValidators(form);
  2416 			if (!validators.length) {
  2416 			if (!validators.length) {
  2417 				return true;
  2417 				return true;
  2418 			}
  2418 			}
  2419 			var output = [];
  2419 			var output = [],
  2420 			var result = true;
  2420 				result = true;
  2421 			for (var index=0; index < validators.length; index++) {
  2421 			for (var index=0; index < validators.length; index++) {
  2422 				var validator = validators[index];
  2422 				var validator = validators[index],
  2423 				var source = validator[0];
  2423 					source = validator[0],
  2424 				var handler = validator[1];
  2424 					handler = validator[1],
  2425 				var validatorResult = ams.executeFunctionByName(handler, form, source);
  2425 					validatorResult = ams.executeFunctionByName(handler, form, source);
  2426 				if (validatorResult === false) {
  2426 				if (validatorResult === false) {
  2427 					result = false;
  2427 					result = false;
  2428 				} else if (typeof(validatorResult) === 'string') {
  2428 				} else if (typeof(validatorResult) === 'string') {
  2429 					output.push(validatorResult);
  2429 					output.push(validatorResult);
  2430 				} else if (result.length && (result.length > 0)) {
  2430 				} else if (result.length && (result.length > 0)) {
  5059 		 * Flot charts
  5059 		 * Flot charts
  5060 		 */
  5060 		 */
  5061 		chart: function(element) {
  5061 		chart: function(element) {
  5062 			var charts = $('.chart', element);
  5062 			var charts = $('.chart', element);
  5063 			if (charts.length > 0) {
  5063 			if (charts.length > 0) {
  5064 				ams.ajax && ams.ajax.check($.fn.plot,
  5064 				ams.ajax && ams.ajax.check([window.Flot, $.color],
  5065 										   ams.baseURL + 'flot/jquery.flot' + ams.devext + '.js',
  5065 					[ams.baseURL + 'ext/flot/jquery.canvaswrapper' + ams.devext + '.js',
  5066 										   function() {
  5066 					 ams.baseURL + 'ext/flot/jquery.colorhelpers' + ams.devext + '.js'],
  5067 											   charts.each(function() {
  5067 					function () {
  5068 
  5068 						ams.ajax.check($.fn.plot,
  5069 												   function checkPlugin(plugin) {
  5069 							ams.baseURL + 'ext/flot/jquery.flot' + ams.devext + '.js',
  5070 													   for (var index in $.plot.plugins) {
  5070 							function () {
  5071 														   if ($.plot.plugins.hasOwnProperty(index)) {
  5071 								charts.each(function () {
  5072 															   var pluginInfo = $.plot.plugins[index];
  5072 
  5073 															   if (pluginInfo.name === plugin) {
  5073 									var chart = $(this),
  5074 																   return pluginInfo;
  5074 										data = chart.data(),
  5075 															   }
  5075 										dataOptions = {},
  5076 														   }
  5076 										plugin,
  5077 													   }
  5077 										flotPlugins = (data.amsChartPlugins || '').split(/\s+/);
  5078 													   return null;
  5078 
  5079 												   }
  5079 									function checkPlugin(plugin) {
  5080 
  5080 										for (var index in $.plot.plugins) {
  5081 												   var chart = $(this);
  5081 											if ($.plot.plugins.hasOwnProperty(index)) {
  5082 												   var data = chart.data();
  5082 												var pluginInfo = $.plot.plugins[index];
  5083 												   var dataOptions = {};
  5083 												if (pluginInfo.name === plugin) {
  5084 												   var plugins = (data.amsChartPlugins || '').split(/\s+/);
  5084 													return pluginInfo;
  5085 												   if (plugins.length > 0) {
  5085 												}
  5086 													   for (var index in plugins) {
  5086 											}
  5087 														   if (plugins.hasOwnProperty(index)) {
  5087 										}
  5088 															   var pluginName = plugins[index];
  5088 										return null;
  5089 															   if (!checkPlugin(pluginName)) {
  5089 									}
  5090 																   ams.getScript(ams.baseURL + 'flot/jquery.flot.' + pluginName + ams.devext + '.js');
  5090 
  5091 															   }
  5091 									function initChart() {
  5092 														   }
  5092 										var settings = $.extend({}, dataOptions, data.amsChartOptions);
  5093 													   }
  5093 										settings = ams.executeFunctionByName(data.amsChartInitCallback, chart, settings) || settings;
  5094 												   }
  5094 										var chartData = data.amsChartData,
  5095 												   var settings = $.extend({}, dataOptions, data.amsChartOptions);
  5095 											chartDataLoader = data.amsChartDataLoader;
  5096 												   settings = ams.executeFunctionByName(data.amsChartInitCallback, chart, settings) || settings;
  5096 										if (chartDataLoader) {
  5097 												   var chartData = data.amsChartData;
  5097 											$.getJSON(chartDataLoader, chartData).done(function (data) {
  5098 												   chartData = ams.executeFunctionByName(data.amsChartInitData, chart, chartData) || chartData;
  5098 												settings = $.extend({}, settings, data.settings);
  5099 												   var plugin = chart.plot(chartData, settings);
  5099 												createChart(data.data, settings);
  5100 												   ams.executeFunctionByName(data.amsChartAfterInitCallback, chart, plugin, settings);
  5100 											});
  5101 											   });
  5101 										} else {
  5102 										   });
  5102 											createChart(data, settings);
       
  5103 										}
       
  5104 									}
       
  5105 
       
  5106 									function createChart(chartData, settings) {
       
  5107 										chartData = ams.executeFunctionByName(data.amsChartInitData, chart, chartData) || chartData;
       
  5108 										plugin = chart.plot(chartData, settings);
       
  5109 										ams.executeFunctionByName(data.amsChartAfterInitCallback, chart, plugin, settings);
       
  5110 									}
       
  5111 
       
  5112 									var deferred = [];
       
  5113 									if (flotPlugins.length > 0) {
       
  5114 										for (var index in flotPlugins) {
       
  5115 											if (flotPlugins.hasOwnProperty(index)) {
       
  5116 												var pluginName = flotPlugins[index];
       
  5117 												if (!checkPlugin(pluginName)) {
       
  5118 													deferred.push(ams.getScript(ams.baseURL + 'ext/flot/jquery.flot.' + pluginName + ams.devext + '.js'));
       
  5119 												}
       
  5120 											}
       
  5121 										}
       
  5122 									}
       
  5123 									if (deferred.length > 0) {
       
  5124 										$.when.apply($, deferred).then(function () {
       
  5125 											initChart();
       
  5126 										})
       
  5127 									} else {
       
  5128 										initChart();
       
  5129 									}
       
  5130 								});
       
  5131 							});
       
  5132 					});
  5103 			}
  5133 			}
  5104 		},
  5134 		},
  5105 
  5135 
  5106 		/**
  5136 		/**
  5107 		 * Sparkline graphs
  5137 		 * Sparkline graphs