А как насчет использования соглашения, основанного на ваших переменных, вместо прямого вызова:
Вы можете создать
chartHandlers: {
glidepathDETAILS: function(data, id){ drawDetails(data, id); },
glidepathOVERVIEW: function(data, id){ drawOverview(data, id); }
invoke: function(switchKey, type, data, id){ this[switchKey + type.ToString()].apply(data, type); }
}
Обратите внимание, как функция invoke вызывает вашу функцию на основе имен вашей клавиши переключенияи тип диаграммы.
Тогда вы можете заменить весь коммутатор на один вызов.
chartHandlers.invoke(switchKey, chartOptions.type, chartOptions.data, $chart.attr('id'));
Отказ от ответственности: Я давно не программировал в JS и не проверял свой синтаксис. Это просто чтобы дать вам идею. Извините за возможные глупые ошибки.