View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000917SAS.Планета[All Projects] Хотелкаpublic17-08-2011 05:4607-01-2013 10:04
Reportersheavy 
Assigned Tovdemidov 
PrioritynormalSeveritytweakReproducibilityalways
StatusresolvedResolutionfixed 
PlatformWindowsOSXPOS VersionSP3
Product Version110427.Beta 
Target Version131111Fixed in Version131111 
Summary0000917: Изменение видимости дочерних категорий
DescriptionСм. Скриншот: если снять галочку видимости с главной категории, метка, принадлежащая вложеной подкатегории останеться видимой. Кажется, было бы логично и интуитивно понятно, что если убирается галочка на главной категории, что она должна сниматься и со всех подчиненных. Иначе приходиться пробегаться по всем вложенным категориям. Чекбокс "Все" здесь тоже не помогает, т.к. сбрасывает флаг Visible и в других категориях, которых достаточно много.
Steps To ReproduceСм. Скриншот:
Additional InformationАналогично сделано во многих программах, где требуется сканирование диска (антивирусы, восстановители удаленных файлов и т.п.)

Понятно, что на самом деле вложенности в Category.sml нет и нужно улучшать обработчих кнопки "ОК" и "Применить" или делать новый чекбокс рядом с чекбоксом "Все" (менее предпочтительно)
Tagssml, категории
Attached Filesjpg file icon 2011-08-17_092532.jpg [^] (28,459 bytes) 17-08-2011 05:46

- Relationships
related to 0000137closedvdemidov Вложенные категории 
related to 0000919closedvdemidov Порядок создания главных и вложенных категорий влияет на их отображение в окне "Управление метками" 

-  Notes
(0003513)
gpsMax (manager)
18-08-2011 04:11

Да, надо было давно это вынести отдельным тикетом, спасибо.

Из 137-й хотелки:
Типа [галки] два - включена/выключена. Но при включении/выключении галки одновременно с этим включаются/выключаются галки для всех вложенных категорий. Вложенность же определяется динамически, из структуры категорий, а не из файла данных в готовом виде, поэтому менять его не потребуется.

Тупо рекурсия: при включении/выключении галки пробегаем по вложенным категориям и применяем эту же операцию на них.
(0003547)
zOn (reporter)
19-08-2011 07:18

Не стал создавать отдельный баг, т.к. это видимо взаимосвязано:
если поставить курсор на подкатегорию и нажать - удалить, то удалится и категория и подкатегория.
(0003555)
Tolik (manager)
19-08-2011 07:51

только если в этой категории нет других подкатегорий.
(0003556)
zOn (reporter)
19-08-2011 07:54

да. забыл сказать.
(0010290)
Fed (reporter)
02-01-2013 05:43
edited on: 07-01-2013 09:27

Решил эту задачу переделав в frm_MarksExplorer.pas 2 процедуры CategoryTreeViewKeyUp и CategoryTreeViewMouseUp и добавив новую CategoryTreeViewVisible:

----------------------
Процедура TfrmMarksExplorer.CategoryTreeViewVisible:
procedure TfrmMarksExplorer.CategoryTreeViewVisible(Node: TTreeNode);
var
  VCategoryOld: IMarkCategory;
  VCategoryNew: IMarkCategory;
  VTreeNode: TTreeNode;
  VVisible: Boolean;
  VIndex,VLevel,VNum: Integer;
begin
  VCategoryOld := IMarkCategory(Node.Data);
  if VCategoryOld <> nil then begin
    // VVisible, VIndex - для визуализации узлов.
    if Node.StateIndex=1 then begin
      VVisible := False;
      VIndex:=2;
    end else begin
      VVisible := True;
      VIndex:=1;
    end;
    // Изменение значения Visible текущего узла категории меток
    VCategoryNew := FMarkDBGUI.MarksDb.CategoryDB.Factory.ModifyVisible(VCategoryOld, VVisible);
    Node.StateIndex:=VIndex;
    if not VCategoryOld.IsEqual(VCategoryNew) then begin
      FMarkDBGUI.MarksDb.CategoryDB.UpdateCategory(VCategoryOld, VCategoryNew);
    end;
    // Изменение значения Visible дочерних узла категории меток
    // CheckBox3 включает/выклучает функцию каскадной визуализации.
    if CheckBox3.Checked then begin
      // VLevel - уровень глубины узла. VNum - номер узла изменения видимости.
      CategoryTreeView.Visible := False;
      VLevel:=Node.Level;
      // Цикл продолжается пока не перейдём на новую ветвь (пока уровень глубины узлов не станет как наша)
      // Или до конца ветвей
      for VNum:=Node.AbsoluteIndex+1 to CategoryTreeView.Items.Count - 1 do
        if CategoryTreeView.Items[VNum].Level>VLevel then begin
          VTreeNode := CategoryTreeView.Items[VNum];
          VCategoryOld := IMarkCategory(VTreeNode.Data);
          if VCategoryOld <> nil then begin
            VCategoryNew := FMarkDBGUI.MarksDb.CategoryDB.Factory.ModifyVisible(VCategoryOld, VVisible);
            VTreeNode.StateIndex:=VIndex;
            if not VCategoryOld.IsEqual(VCategoryNew) then begin
              FMarkDBGUI.MarksDb.CategoryDB.UpdateCategory(VCategoryOld, VCategoryNew);
            end;
          end;
        end else break; // Прерываем цикл так, как уровень глубины узлов стал как наш или выше.
      CategoryTreeView.Visible := True;
    end;
  end;
end;

----------------------
Процедура TfrmMarksExplorer.CategoryTreeViewKeyUp:
procedure TfrmMarksExplorer.CategoryTreeViewKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  VCategoryOld: IMarkCategory;
  VCategoryNew: IMarkCategory;
begin
  If key=VK_DELETE then begin
    VCategoryOld := GetSelectedCategory;
    if VCategoryOld <> nil then begin
      FMarkDBGUI.DeleteCategoryModal(VCategoryOld, Self.Handle);
    end;
  end;

  if Key=VK_SPACE then
    CategoryTreeViewVisible(CategoryTreeView.Selected);
end;

----------------------
Процедура TfrmMarksExplorer.CategoryTreeViewMouseUp:
procedure TfrmMarksExplorer.CategoryTreeViewMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  VCategoryOld: IMarkCategory;
  VCategoryNew: IMarkCategory;
  VTreeNode: TTreeNode;
begin
  if htOnStateIcon in CategoryTreeView.GetHitTestInfoAt(X,Y) then
    CategoryTreeViewVisible(CategoryTreeView.GetNodeAt(X,Y));
 end;
----------------------

(0010327)
Garl (manager)
05-01-2013 10:28

проверил, по логике и работе - всё ок!
добавлять вышеуказанный код в исходник?
(0010329)
vdemidov (manager)
05-01-2013 11:59

>добавлять вышеуказанный код в исходник?
Ну я бы дал автору кода еще пару попыток сделать чистый пул реквест, который будет принят.
(0010347)
Fed (reporter)
06-01-2013 20:36

>>добавлять вышеуказанный код в исходник?
>Ну я бы дал автору кода еще пару попыток сделать чистый пул реквест, который будет принят.
Подскажите, пожалуйста, что значит "*чистый пул реквест*"?
Спасибо, за помощь.
(0010348)
vdemidov (manager)
06-01-2013 21:07

Ну претензии к прошлой попытке я в комментарии написал. С тех пор ветка уже ушла вперед, так что нужно сделать новый коммит и пул реквест.
(0010350)
Fed (reporter)
07-01-2013 05:30

Создал новый pull request.
Сейчас правильно сделал?
Спасибо, за помощь.
(0010351)
vdemidov (manager)
07-01-2013 10:03

Теперь лучше, но есть пару замечаний:
1. Оставлять неиспользуемые переменные на которые вылазят варнинги не стоит. Я это поправил на этот раз, но следующий раз просто не приму пул реквест.
2. Контролам нужно давать осмысленные имена, а не CheckBox2, Panel1, CheckBox3. То что один из этих контролов уже существовал с таким именем - не оправдание.
(0010352)
vdemidov (manager)
07-01-2013 10:04

Спасибо за вклад в разработку.

- Users who viewed this issue
User List Anonymous (1892x)
Total Views 1892
Last View 13-08-2020 17:11

- Issue History
Date Modified Username Field Change
17-08-2011 05:46 sheavy New Issue
17-08-2011 05:46 sheavy File Added: 2011-08-17_092532.jpg
17-08-2011 06:29 Tolik Note Added: 0003478
17-08-2011 07:28 sheavy Note Added: 0003484
17-08-2011 07:31 sheavy Note Added: 0003485
17-08-2011 07:39 sheavy Note Added: 0003487
17-08-2011 07:40 sheavy Note Deleted: 0003484
17-08-2011 07:40 sheavy Note Deleted: 0003485
17-08-2011 07:40 sheavy Note Edited: 0003487 View Revisions
17-08-2011 07:41 sheavy Note Edited: 0003487 View Revisions
17-08-2011 07:41 sheavy Note Edited: 0003487 View Revisions
17-08-2011 07:42 Tolik Note Added: 0003488
17-08-2011 07:42 sheavy Note Edited: 0003487 View Revisions
17-08-2011 07:42 Tolik File Added: Cat.GIF
17-08-2011 07:44 sheavy Note Added: 0003489
17-08-2011 07:44 sheavy Note Deleted: 0003489
17-08-2011 07:46 sheavy Note Added: 0003490
17-08-2011 07:51 sheavy Note Edited: 0003490 View Revisions
17-08-2011 07:52 sheavy Note Edited: 0003490 View Revisions
17-08-2011 07:52 sheavy Note Edited: 0003490 View Revisions
17-08-2011 07:53 Fetser Note Added: 0003491
17-08-2011 07:55 Tolik Note Added: 0003493
17-08-2011 07:59 Tolik Status new => acknowledged
17-08-2011 08:07 vdemidov Note Added: 0003494
17-08-2011 09:26 vdemidov File Deleted: Cat.GIF
17-08-2011 09:26 vdemidov Note Deleted: 0003494
17-08-2011 09:27 vdemidov Note Deleted: 0003493
17-08-2011 09:27 vdemidov Note Deleted: 0003491
17-08-2011 09:27 vdemidov Note Deleted: 0003490
17-08-2011 09:27 vdemidov Note Deleted: 0003488
17-08-2011 09:27 vdemidov Note Deleted: 0003487
17-08-2011 09:27 vdemidov Note Deleted: 0003478
17-08-2011 09:28 sheavy Tag Attached: категории
17-08-2011 09:28 sheavy Tag Attached: sml
17-08-2011 09:29 vdemidov Target Version => 40xxxx
17-08-2011 09:29 vdemidov Summary Определение приоритета видимости категорий => Изменение видимости дочерних категорий
17-08-2011 09:29 vdemidov Status acknowledged => confirmed
17-08-2011 09:29 vdemidov Product Version => 110427.Beta
18-08-2011 04:09 gpsMax Relationship added related to 0000137
18-08-2011 04:11 gpsMax Note Added: 0003513
18-08-2011 04:15 gpsMax Relationship added related to 0000919
19-08-2011 07:18 zOn Note Added: 0003547
19-08-2011 07:51 Tolik Note Added: 0003555
19-08-2011 07:54 zOn Note Added: 0003556
02-01-2013 05:43 Fed Note Added: 0010290
02-01-2013 05:45 Fed Note Edited: 0010290 View Revisions
02-01-2013 05:45 Fed Note Edited: 0010290 View Revisions
02-01-2013 06:12 Fed Note Edited: 0010290 View Revisions
02-01-2013 06:49 vdemidov Note Added: 0010292
02-01-2013 06:58 Fed Note Added: 0010293
02-01-2013 07:19 vdemidov Note Added: 0010294
02-01-2013 10:21 Fed Note Added: 0010295
02-01-2013 10:24 Fed Note Edited: 0010295 View Revisions
02-01-2013 10:28 vdemidov Note Added: 0010296
02-01-2013 10:34 Fed Note Edited: 0010295 View Revisions
02-01-2013 10:45 Fed File Added: Bitbucket_Import.jpg
02-01-2013 10:52 Fed Note Added: 0010297
02-01-2013 10:55 Fed Note Edited: 0010297 View Revisions
02-01-2013 10:56 Fetser File Added: 1.jpg
02-01-2013 10:57 Fetser Note Added: 0010298
02-01-2013 11:04 Fed Note Added: 0010299
02-01-2013 11:05 Fetser Note Added: 0010300
02-01-2013 11:07 Fetser Note Edited: 0010300 View Revisions
02-01-2013 11:17 Fed Note Added: 0010301
02-01-2013 11:17 vdemidov Note Added: 0010302
02-01-2013 11:21 vdemidov Note Added: 0010303
02-01-2013 11:27 Fetser Note Deleted: 0010298
02-01-2013 11:28 Fetser Note Deleted: 0010300
02-01-2013 12:36 Fed Note Added: 0010304
02-01-2013 12:56 Fetser Note Added: 0010305
02-01-2013 13:02 zed Note Added: 0010306
02-01-2013 18:04 vdemidov Note Deleted: 0010305
02-01-2013 18:04 vdemidov Note Deleted: 0010304
02-01-2013 18:04 vdemidov Note Deleted: 0010303
02-01-2013 18:04 vdemidov Note Deleted: 0010302
02-01-2013 18:04 vdemidov Note Deleted: 0010301
02-01-2013 18:04 vdemidov Note Deleted: 0010299
02-01-2013 18:05 vdemidov Note Deleted: 0010297
02-01-2013 18:05 vdemidov Note Deleted: 0010296
02-01-2013 18:05 vdemidov Note Deleted: 0010295
02-01-2013 18:05 vdemidov Note Deleted: 0010294
02-01-2013 18:05 vdemidov Note Deleted: 0010293
02-01-2013 18:05 vdemidov Note Deleted: 0010292
02-01-2013 18:06 vdemidov Note Deleted: 0010306
05-01-2013 10:28 Garl Note Added: 0010327
05-01-2013 11:59 vdemidov Note Added: 0010329
06-01-2013 20:36 Fed Note Added: 0010347
06-01-2013 21:07 vdemidov Note Added: 0010348
06-01-2013 22:38 Fed Note Added: 0010349
07-01-2013 04:10 Fed Note Edited: 0010349 View Revisions
07-01-2013 05:19 Fed Note Deleted: 0010349
07-01-2013 05:30 Fed Note Added: 0010350
07-01-2013 09:27 Fed Note Edited: 0010290 View Revisions
07-01-2013 10:03 vdemidov Note Added: 0010351
07-01-2013 10:04 vdemidov Note Added: 0010352
07-01-2013 10:04 vdemidov Status confirmed => resolved
07-01-2013 10:04 vdemidov Fixed in Version => 131111
07-01-2013 10:04 vdemidov Resolution open => fixed
07-01-2013 10:04 vdemidov Assigned To => vdemidov
07-01-2013 10:04 vdemidov Target Version 40xxxx => 131111
07-01-2013 10:04 vdemidov File Deleted: 1.jpg
07-01-2013 10:04 vdemidov File Deleted: Bitbucket_Import.jpg



Copyright © 2007 - 2020 SAS.Planet Team