Your IP : 216.73.216.170


Current Path : /home/bitrix/ext_www/school1535.yacl.site/gantt_old/
Upload File :
Current File : /home/bitrix/ext_www/school1535.yacl.site/gantt_old/index.php

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Новый гантт");

Bitrix\Main\Page\Asset::getInstance()->addCss('/gantt/platform.css');
Bitrix\Main\Page\Asset::getInstance()->addCss('/gantt/libs/jquery/dateField/jquery.dateField.css');
Bitrix\Main\Page\Asset::getInstance()->addCss('/gantt/gantt.css');
Bitrix\Main\Page\Asset::getInstance()->addCss('/gantt/libs/jquery/valueSlider/mb.slider.css');

Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/jquery/jquery.livequery.1.1.1.min.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/jquery/jquery.timers.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/utilities.js');

Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/forms.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/date.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/dialogs.js');

Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/layout.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/i18nJs.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/jquery/dateField/jquery.dateField.js');

Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/jquery/JST/jquery.JST.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/jquery/valueSlider/jquery.mb.slider.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/jquery/svg/jquery.svg.min.js');

Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/libs/jquery/svg/jquery.svgdom.1.8.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/ganttUtilities.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/ganttTask.js');

Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/ganttDrawerSVG.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/ganttZoom.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/ganttGridEditor.js');
Bitrix\Main\Page\Asset::getInstance()->addJs('/gantt/ganttMaster.js');
?>

<div id="workSpace" style="overflow-y: auto; overflow-x: hidden; position: relative;"></div>

<form id="gimmeBack" style="display: none;" action="../gimmeBack.jsp" method="post" target="_blank">
  <input type="hidden" name="prj" id="gimBaPrj" />
</form>

<script type="text/javascript">
  let ge;
  $(function () {
    // here starts gantt initialization
    ge = new GanttMaster();
    ge.set100OnClose = true;
    ge.shrinkParent = true;

    setTimeout(() => {
      ge.init($("#workSpace"));
      loadI18n(); //overwrite with localized ones

      //in order to force compute the best-fitting zoom level
      delete ge.gantt.zoom;

      ge.loadProject({
        tasks: [
          {
            id: -1,
            name: "1 \u041f\u0420\u0415\u0414\u0412\u0410\u0420\u0418\u0422\u0415\u041b\u042c\u041d\u042b\u0419 \u042d\u0422\u0410\u041f",
            progress: 0,
            progressByWorklog: false,
            relevance: 0,
            type: "",
            typeId: "",
            description: "",
            code: "",
            level: 0,
            status: "STATUS_ACTIVE",
            depends: "",
            canWrite: true,
            start: 1658468629000,
            duration: 30,
            startPlan: 1657950229000,
            durationPlan: 15,
            startIsMilestone: false,
            endIsMilestone: false,
            collapsed: false,
            assigs: [],
            hasChild: true,
          },
          {
            id: -2,
            name: "1.1 \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u044d\u0442\u0430\u043f - \u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b",
            progress: 0,
            progressByWorklog: false,
            relevance: 0,
            type: "",
            typeId: "",
            description: "",
            code: "",
            level: 1,
            status: "STATUS_ACTIVE",
            depends: "",
            canWrite: true,
            start: 1658468629000,
            duration: 10,
            startPlan: 1657950229000,
            durationPlan: 9,
            startIsMilestone: false,
            endIsMilestone: false,
            collapsed: false,
            assigs: [],
            hasChild: true,
          },
          {
            id: -3,
            name: "1.1.1 \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0414\u041e \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u041d\u0422\u0421 \u0438 \u0434\u0430\u0442\u043e\u0439",
            progress: 0,
            progressByWorklog: false,
            relevance: 0,
            type: "",
            typeId: "",
            description: "",
            code: "",
            level: 2,
            status: "STATUS_ACTIVE",
            depends: "",
            canWrite: true,
            start: 1659159829000,
            duration: 2,
            startPlan: 1659073429000,
            durationPlan: 3,
            startIsMilestone: false,
            endIsMilestone: false,
            collapsed: false,
            assigs: [],
            hasChild: false,
          },
          {
            id: -4,
            name: "1.1.2 \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432 \u0414\u041e",
            progress: 0,
            progressByWorklog: false,
            relevance: 0,
            type: "",
            typeId: "",
            description: "",
            code: "",
            level: 2,
            status: "STATUS_ACTIVE",
            depends: "3",
            canWrite: true,
            start: 1659332629000,
            duration: 4,
            startPlan: 1659419029000,
            durationPlan: 2,
            startIsMilestone: false,
            endIsMilestone: false,
            collapsed: false,
            assigs: [],
            hasChild: false,
          },
          {
            id: -5,
            name: "1.2.1 \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u0432 \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0422\u041f\u0418 \u0420\u043e\u0441\u043d\u0435\u0434\u0440\u0430",
            progress: 0,
            progressByWorklog: false,
            relevance: 0,
            type: "",
            typeId: "",
            description: "",
            code: "",
            level: 1,
            status: "STATUS_ACTIVE",
            depends: "2",
            canWrite: true,
            start: 1659159829000,
            duration: 5,
            startPlan: 1659159829000,
            durationPlan: 6,
            startIsMilestone: false,
            endIsMilestone: false,
            collapsed: false,
            assigs: [],
            hasChild: true,
          },
          {
            id: -6,
            name: "1.2.2 \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0420\u043e\u0441\u043d\u0435\u0434\u0440\u0430",
            progress: 0,
            progressByWorklog: false,
            relevance: 0,
            type: "",
            typeId: "",
            description: "",
            code: "",
            level: 2,
            status: "STATUS_ACTIVE",
            depends: "",
            canWrite: true,
            start: 1659159829000,
            duration: 4,
            startPlan: 1659159829000,
            durationPlan: 3,
            startIsMilestone: false,
            endIsMilestone: false,
            collapsed: false,
            assigs: [],
            hasChild: false,
          },
          {
            id: -7,
            name: "1.2.3 \u0414\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u0420\u043e\u0441\u043d\u0435\u0434\u0440\u0430",
            progress: 0,
            progressByWorklog: false,
            relevance: 0,
            type: "",
            typeId: "",
            description: "",
            code: "",
            level: 2,
            status: "STATUS_ACTIVE",
            depends: "",
            canWrite: true,
            start: 1659419029000,
            duration: 3,
            startPlan: 1659332629000,
            durationPlan: 3,
            startIsMilestone: false,
            endIsMilestone: false,
            collapsed: false,
            assigs: [],
            hasChild: false,
          },
          {
            id: -8,
            name: "1.2.4 \u0418\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043a\u0430\u0437\u0430 \u0420\u043e\u0441\u043d\u0435\u0434\u0440\u0430 \u043e \u043d\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430 \u0433\u043e\u0434",
            progress: 0,
            progressByWorklog: false,
            relevance: 0,
            type: "",
            typeId: "",
            description: "",
            code: "",
            level: 2,
            status: "STATUS_ACTIVE",
            depends: "",
            canWrite: true,
            start: 1659591829000,
            duration: 2,
            startPlan: 1659419029000,
            durationPlan: 5,
            startIsMilestone: false,
            endIsMilestone: false,
            collapsed: false,
            assigs: [],
            hasChild: false,
          },
        ],
        canWrite: true,
        canDelete: true,
        canWriteOnParent: true,
        canAdd: true,
      });
    }, 0)
  });
</script>

<div id="gantEditorTemplates" style="display: none">
  <div class="__template__" type="GANTBUTTONS">
    <!--
    <div class="ganttButtonBar noprint">
      <div class="buttons">
        <button onclick="$('#workSpace').trigger('zoomMinus.gantt'); return false;" class="" title="zoom out"><span class="teamworkIcon">)</span></button>
        <button onclick="$('#workSpace').trigger('zoomPlus.gantt');return false;" class="" title="zoom in"><span class="teamworkIcon">(</span></button>
        <button onclick="ge.gantt.showCriticalPath=!ge.gantt.showCriticalPath; ge.redraw();return false;" class="requireCanSeeCriticalPath" title="CRITICAL_PATH"><span class="teamworkIcon">&pound;</span></button>
    </div>
    -->
  </div>

  <div class="__template__" type="TASKSEDITHEAD">
    <!--
    <table class="gdfTable" cellspacing="0" cellpadding="0">
      <thead>
      <tr style="height: 48px;">
        <th class="gdfColHeader" style="width: 45px;">№<br />н.н.</th>
        <th class="gdfColHeader gdfResizable" style="width: 250px;">Этап/Задача</th>
        <th class="gdfColHeader gdfResizable" style="width: 150px;">Вид работ</th>
        <th class="gdfColHeader gdfResizable" style="width: 94px;">План нач.<br /><span class="green">Факт нач.</span></th>
        <th class="gdfColHeader gdfResizable" style="width: 94px;">План окон.<br /><span class="green">Факт окон.</span></th>
        <th class="gdfColHeader gdfResizable" style="width: 150px;">Ответственный</th>
        <th class="gdfColHeader gdfResizable" style="width: 56px;">Дней</th>
        <th class="gdfColHeader gdfResizable" style="width: 144px;">План объем работ<br /><span class="red">Факт объем работ</span></th>
        <th class="gdfColHeader gdfResizable" style="width: 500px; text-align: left; padding-left: 10px;">Процент<br />выполнения</th>
      </tr>
      </thead>
    </table>
    -->
  </div>

  <div class="__template__" type="TASKROW">
    <!--
    <tr id="tid_(#=obj.id#)" taskId="(#=obj.id#)" class="taskEditRow (#=obj.isParent()?'isParent':''#) (#=obj.collapsed?'collapsed':''#)" level="(#=level#)">
      <td class="gdfCell"><span class="taskRowIndex">(#=obj.getRow()+1#)</span></td>
      <td class="gdfCell indentCell" style="padding-left:(#=obj.level*10+18#)px;">
        <div class="exp-controller" align="center"></div>
        <input type="text" name="name" value="(#=obj.name#)" placeholder="name">
      </td>
      <td class="gdfCell">
        <select name="works_type" class="select2">
        <option value="">Не выбрано</option>
        <option value="1">Вид работ 1</option>
        <option value="2">Вид работ 2</option>
        <option value="3">Вид работ 3</option>
        </select>
      </td>
      <td class="gdfCell">
        <input type="text" name="startPlan" value="" class="date">
        <input type="text" name="start" value="" class="date green">
      </td>
      <td class="gdfCell">
        <input type="text" name="endPlan" value="" class="date">
        <input type="text" name="end" value="" class="date green">
      </td>
      <td class="gdfCell"></td>
      <td class="gdfCell"><input type="text" name="duration" autocomplete="off" value="(#=obj.duration#)"></td>
      <td class="gdfCell"></td>
      <td class="gdfCell"><input type="text" name="progress" class="validated" entrytype="PERCENTILE" autocomplete="off" value="(#=obj.progress?obj.progress:''#)" (#=obj.progressByWorklog?"readOnly":""#)></td>
    </tr>
    -->
  </div>

  <div class="__template__" type="TASKEMPTYROW">
    <!--
    <tr class="taskEditRow emptyRow" >
      <th class="gdfCell"></th>
      <td class="gdfCell"></td>
      <td class="gdfCell"></td>
      <td class="gdfCell"></td>
      <td class="gdfCell"></td>
      <td class="gdfCell"></td>
      <td class="gdfCell"></td>
      <td class="gdfCell"></td>
      <td class="gdfCell"></td>
    </tr>
    -->
  </div>
</div>

<script type="text/javascript">
  setTimeout(() => {
    $.JST.loadDecorator("RESOURCE_ROW", function (resTr, res) {
      resTr.find(".delRes").click(function () {
        $(this).closest("tr").remove();
      });
    });

    $.JST.loadDecorator("ASSIGNMENT_ROW", function (assigTr, taskAssig) {
      var resEl = assigTr.find("[name=resourceId]");
      var opt = $("<option>");
      resEl.append(opt);
      for (var i = 0; i < taskAssig.task.master.resources.length; i++) {
        var res = taskAssig.task.master.resources[i];
        opt = $("<option>");
        opt.val(res.id).html(res.name);
        if (taskAssig.assig.resourceId == res.id)
          opt.attr("selected", "true");
        resEl.append(opt);
      }
      var roleEl = assigTr.find("[name=roleId]");
      for (var i = 0; i < taskAssig.task.master.roles.length; i++) {
        var role = taskAssig.task.master.roles[i];
        var optr = $("<option>");
        optr.val(role.id).html(role.name);
        if (taskAssig.assig.roleId == role.id) optr.attr("selected", "true");
        roleEl.append(optr);
      }

      if (
        taskAssig.task.master.permissions.canWrite &&
        taskAssig.task.canWrite
      ) {
        assigTr.find(".delAssig").click(function () {
          var tr = $(this)
            .closest("[assId]")
            .fadeOut(200, function () {
              $(this).remove();
            });
        });
      }
    });
  }, 0)

  function loadI18n() {
    GanttMaster.messages = {
      CANNOT_WRITE: "No permission to change the following task:",
      CHANGE_OUT_OF_SCOPE:
        "Project update not possible as you lack rights for updating a parent project.",
      START_IS_MILESTONE: "Start date is a milestone.",
      END_IS_MILESTONE: "End date is a milestone.",
      TASK_HAS_CONSTRAINTS: "Task has constraints.",
      GANTT_ERROR_DEPENDS_ON_OPEN_TASK:
        "Error: there is a dependency on an open task.",
      GANTT_ERROR_DESCENDANT_OF_CLOSED_TASK:
        "Error: due to a descendant of a closed task.",
      TASK_HAS_EXTERNAL_DEPS: "This task has external dependencies.",
      GANNT_ERROR_LOADING_DATA_TASK_REMOVED:
        "GANNT_ERROR_LOADING_DATA_TASK_REMOVED",
      CIRCULAR_REFERENCE: "Circular reference.",
      CANNOT_DEPENDS_ON_ANCESTORS: "Cannot depend on ancestors.",
      INVALID_DATE_FORMAT:
        "The data inserted are invalid for the field format.",
      GANTT_ERROR_LOADING_DATA_TASK_REMOVED:
        "An error has occurred while loading the data. A task has been trashed.",
      CANNOT_CLOSE_TASK_IF_OPEN_ISSUE:
        "Cannot close a task with open issues",
      TASK_MOVE_INCONSISTENT_LEVEL:
        "You cannot exchange tasks of different depth.",
      CANNOT_MOVE_TASK: "CANNOT_MOVE_TASK",
      PLEASE_SAVE_PROJECT: "PLEASE_SAVE_PROJECT",
      GANTT_SEMESTER: "Semester",
      GANTT_SEMESTER_SHORT: "s.",
      GANTT_QUARTER: "Quarter",
      GANTT_QUARTER_SHORT: "q.",
      GANTT_WEEK: "Week",
      GANTT_WEEK_SHORT: "w.",
    };
  }
</script>

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>