SugarTalk - ресурс для администраторов и разработчиков системы SugarCRM.

Создание собственных чартов/диаграмм в SugarCRM

Итак сегодня мы рассмотрим как же создать свои диаграммы/чарты в SugarCRM.
SugarCRM «из коробки» включает в себя следующие основные диаграммы:

  • Все сделки по источникам предварительных контактов
  • Диаграмма рентабельности инвестиций
  • Диаграмма стадий моих продаж
  • Диаграмма стадий общих продаж
  • Стадии продаж по источникам предварительных контактов
  • Стадии продаж по месяцам

Как видим набор их достаточно ограничен. Но создавать новые диаграммы в SugarCRM не такая и сложная задача. Единственный сложный этап это самостоятельное написание метода извлечения нужных данных (например, с помощью SQL запроса).

Итак представляю вам пошаговую инструкцию создания своего чарта(графика) для SugarCRM. Сразу предупреждаю что статья рассчитана исключительно на программистов.

1. Для удобного составления новых классов существует набор абстрактных классов от Джона Мертика.
Скачиваем их по адресу — https://github.com/jmertic/sugarcrm_chartabstracts. Копируем данный набор абстрактных классов в custom/include/Dashlets/ вашей SugarCRM.

2. Создаем новую директорию для вашего чарта — custom/modules/Charts/Dashlets/YOURCHARTDASHLETNAME/,
где YOURCHARTDASHLETNAME — имя вашего чарта/диаграммы.
Внимание. Далее по тексту все вхождения YOURCHARTDASHLETNAME меняем на данное вами имя и все файлы создаем в данной новой директории.

3. Создаем в этой директории файл с именем YOURCHARTDASHLETNAME.meta.php и следующим содержимым:

1
2
3
4
5
6
7
<?php
$dashletMeta['YOURCHARTDASHLETNAME'] = array('title'       => 'LBL_TITLE',
                                             'description' => 'LBL_TITLE',
                                             'icon'       => 'icon_Charts_Horizontal_32.gif',
                                             'module'   => 'YOURCHARTDASHLETMODULE',
                                             'category'    => 'Charts'
                                             );

где YOURCHARTDASHLETMODULE меняем на название модуля для которого создаётся диаграмма

4. Создаем языковой файл YOURCHARTDASHLETNAME.lang.LANGUAGE.php со следующим содержимым:

1
2
3
4
<?php
$dashletStrings['YOURCHARTDASHLETNAME'] = array('LBL_TITLE'       => 'Тут пишем ваш тайтл',
                                                    'LBL_DESCRIPTION' => 'А тут пишем описание',
                                                    'LBL_REFRESH'     => 'Обновить');

где LANGUAGE для русского языка заменяем на ru_ru, если вам нужен английский на en_us, и т.д.
Соответственно внутри языкового файла пишите названия и описания, которые будут отображаться пользователю.

5. Собственно все что было ранее, это подготовительный этап. Мы просто сообщали системе что мы добавляем график для определенного модуля, и создавали языковой файл с описанием данного чарта. Теперь самый ответственный этап — создание класса с логикой для извлечения нужных данных.

Создаем файл YOURCHARTDASHLETNAME.php со следующим содержимым:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?php
        require_once('custom/include/Dashlets/DashletGenericStackedGroupByChart.php');
 
        class YOURCHARTDASHLETNAME extends DashletGenericStackedGroupByChart
        {
            protected $_seedName = 'YOURCHARTDASHLETMODULE';
 
            protected function getDataset()
            {
                $returnArray = array()
 
                // Здесь вам необходимо самостоятельно реализовать метода для извлечения необходимых данных, и поместить ответ в ассоциативный массив $returnArray
                return $returnArray;
            }
        }

Как вы видите логику для извлечения данных необходимо реализовать самостоятельно. Самый простой и быстрый вариант через SQL запрос, но в принципе в некоторых случаях допустимо и использование встроенных классов и методов, если они удобно и быстро позволяют извлечь нужную информацию. Так же обязательно обратите внимание что наш созданный класс мы наследуем от одного из скачанных раннее. В данном случае это DashletGenericStackedGroupByChart (чарт с группировкой, его мы будем использовать ниже в примере).

Другие возможные варианты — DashletGenericBarChart (гистограмма), DashletGenericFunnelChart (воронка), DashletGenericGaugeChart (простая диаграмма), DashletGenericGroupByChart (вертикальная диаграмма с группировкой), DashletGenericHorizontalGroupByChart (горизонтальная диаграмма с группировкой), DashletGenericPieChart (круговая диаграмма).

Ну и по традиции пример — создание диаграммы для SugarCRM, для лучшего, так сказать, усвоения материала

Создадим диаграмму отображающую количество новых заведенных контактов в CRM с группировкой их по должностям.

1. Придумываем для нашей диаграммы название. Я назову ее очень оригинально — MyDashlet. Соотвественно создаем папку — custom/modules/Charts/Dashlets/MyDashlet/

2. Создаем внутри файл файл MyDashlet.meta.php со следующим кодом:

1
2
3
4
5
6
7
8
9
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
 
global $app_strings, $current_language;
$dashletMeta['MyDashlet'] = array('title'       => 'LBL_TITLE',
                                                    'description' => 'LBL_DESCRIPTION',
                                                    'icon'        => 'icon_Charts_Vertical_32.gif',
                                                    'module'        => 'Contacts',
                                                    'category'    => 'Charts');

3. Создаем внутри нашей директории файл MyDashlet.lang.ru_ru.php

1
2
3
4
5
6
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
$dashletStrings['MyDashlet'] = array('LBL_TITLE'       => 'MyDashlet',
                                                 'LBL_DESCRIPTION' => 'MyDashlet',
                                                 'LBL_REFRESH'     => 'Обновить диаграмму');
?>

4. Создаем файл MyDashlet.php с извлечением нужных данных:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
require_once('custom/include/Dashlets/DashletGenericStackedGroupByChart.php');
 
class MyDashlet extends DashletGenericStackedGroupByChart
{
    protected $_seedName = 'Contacts';
 
    protected $groupBy = array('m','title'); //группировка по месяцам и должностям
 
    protected function getDataset()
    {
        $returnArray = array();
 
    global $db;
 
    $query = "SELECT count(id) as total, title, ".
            db_convert('contacts.date_entered','date_format',array("'%Y-%m'"),array("'YYYY-MM'"))." as m, count(*) as con_count FROM contacts ";
        $query .= " WHERE contacts.date_entered >= ".db_convert("'".'2011-01-01'."'",'datetime') .
                        " AND contacts.date_entered <= ".db_convert("'".'2013-01-01'."'",'datetime') .
                        " AND contacts.deleted=0";
        $query .= " GROUP BY title,".
                        db_convert('contacts.date_entered','date_format',array("'%Y-%m'"),array("'YYYY-MM'")) .
                    " ORDER BY m";
 
        $result = $db->query($query);
 
        $row = $db->fetchByAssoc($result);
 
        while ($row != null){
            $returnArray[] = $row;
            $row = $db->fetchByAssoc($result);
        }
        return $returnArray;
    }
}

Теперь запускаем быстрое восстановление. Далее переходим на главную страницу — нажимаем кнопку добавить раздел — переходим во вкладку диаграммы и мы должны увидеть нашу диаграмму. Выбираем ее, после чего она появляется на главной странице.
Вот что мы получили в результате:

Собственная диаграмма в SugarCRM

На этом все. Обсуждение по этой теме доступно на нашем форуме SugarCRM.

Последнее изменениеПонедельник, 10 июля 2017 18:15
  • Оцените материал
    (0 голосов)
  • Опубликовано в SugarCRM
  • Прочитано 19350 раз

7010 комментарии

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены

Наверх

Последние новости

  • 1
  • 2
  • 3
  • 4

Популярные новости

  • 1
  • 2
  • 3
  • 4