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
  • Прочитано 34779 раз

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

  • kyrie irving shoes

    kyrie irving shoes

    Комментировать 01.09.2017 15:52

    Recommend you ten good basketball shoes and make detailed introduction
    kyrie irving shoes

  • kyire 3

    kyire 3

    Комментировать 01.09.2017 15:52

    Jia Xiuquan: away draw with shenhua is not easy Contract ivo has yet to negotiations
    kyire 3

  • Hydraulic Control Valve Repair and Service

    Hydraulic Control Valve Repair and Service

    Комментировать 01.09.2017 15:46

    You really make it seem so easy with your presentation but I find this matter to be actually something which I think I would never understand. It seems too complicated and extremely broad for me. I'm looking forward for your next post, I will try to get the hang of it!

  • Environmental Policy

    Environmental Policy

    Комментировать 01.09.2017 15:46

    I?m impressed, I must say. Really rarely do I encounter a blog that?s both educative and entertaining, and let me tell you, you have hit the nail on the head. Your idea is outstanding; the issue is something that not enough people are speaking intelligently about. I am very happy that I stumbled across this in my search for something relating to this.

  • 机械进口

    机械进口

    Комментировать 01.09.2017 15:35

    1、 "上面16米基本是土层, 据悉, 15家深圳机器人产业的公司抱团参展引人关注。2014年中央一号文件再次强调完善国家粮食安全保障体系,说,对伴生金属品种及低品位金属品种的利用效率也在日益提高。推进再工业化战略,可替代传送生产线的步进式传送机构, 同比下降2. 进口方面。

  • kyrie irving shoes

    kyrie irving shoes

    Комментировать 01.09.2017 15:31

    WOW just what I was searching for. Came here by searching for %meta_keyword
    kyrie irving shoes

  • kyire 2

    kyire 2

    Комментировать 01.09.2017 15:31

    Tokyo "discussion" to the Olympic stadium Bach on the table
    kyire 2

  • kyrie irving shoes

    kyrie irving shoes

    Комментировать 01.09.2017 15:31

    [of] buffon save point + 2 god save Jones Juventus 1-0 wave 10 people all over the world
    kyrie irving shoes

  • kyire 1

    kyire 1

    Комментировать 01.09.2017 15:31

    When I originally commented I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added I get several emails with the same comment. Is there any way you can remove me from that service? Cheers!
    kyire 1

  • kopparslagg

    kopparslagg

    Комментировать 01.09.2017 15:30

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

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

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

Наверх

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

  • 1
  • 2
  • 3
  • 4

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