SASGIS - SAS.Планета  | 
| View Issue Details | 
  | 
| ID | Project | Category | View Status | Date Submitted | Last Update | 
| 0000917 | SAS.Планета | [All Projects] Хотелка / Feature request | public | 17-08-2011 05:46 | 07-01-2013 10:04 | 
  | 
| Reporter | sheavy |   | 
| Assigned To | vdemidov |   | 
| Priority | normal | Severity | tweak | Reproducibility | always | 
| Status | resolved | Resolution | fixed |   | 
| Platform | Windows | OS | XP | OS Version | SP3 | 
| Product Version | 110427.Beta |   | 
| Target Version | 131111 | Fixed in Version | 131111 |   | 
  | 
| Summary | 0000917: Изменение видимости дочерних категорий | 
| Description | См. Скриншот: если снять галочку видимости с главной категории, метка, принадлежащая вложеной подкатегории останеться видимой. Кажется, было бы логично и интуитивно понятно, что если убирается галочка на главной категории, что она должна сниматься и со всех подчиненных. Иначе приходиться пробегаться по всем вложенным категориям. Чекбокс "Все" здесь тоже не помогает, т.к. сбрасывает флаг Visible и в других категориях, которых достаточно много. | 
| Steps To Reproduce | См. Скриншот: | 
| Additional Information | Аналогично сделано во многих программах, где требуется сканирование диска (антивирусы, восстановители удаленных файлов и т.п.) 
 
Понятно, что на самом деле вложенности в Category.sml нет и нужно улучшать обработчих кнопки "ОК" и "Применить" или делать новый чекбокс рядом с чекбоксом "Все" (менее предпочтительно) | 
| Tags | sml, категории | 
| Relationships | | related to  | 0000137 | closed  | vdemidov  | Вложенные категории  |  | related to  | 0000919 | closed  | vdemidov  | Порядок создания главных и вложенных категорий влияет на их отображение в окне "Управление метками"  |  
  | 
| Attached Files |   2011-08-17_092532.jpg (28,459) 17-08-2011 05:46 https://bugtracker.sasgis.org/file_download.php?file_id=415&type=bug
  
  | 
  | 
| 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 | bug_revision_view_page.php?rev_id=1747 | 
| 17-08-2011 07:41 | sheavy | Note Edited: 0003487 | bug_revision_view_page.php?rev_id=1748 | 
| 17-08-2011 07:41 | sheavy | Note Edited: 0003487 | bug_revision_view_page.php?rev_id=1749 | 
| 17-08-2011 07:42 | Tolik | Note Added: 0003488 |  | 
| 17-08-2011 07:42 | sheavy | Note Edited: 0003487 | bug_revision_view_page.php?rev_id=1750 | 
| 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 | bug_revision_view_page.php?rev_id=1752 | 
| 17-08-2011 07:52 | sheavy | Note Edited: 0003490 | bug_revision_view_page.php?rev_id=1753 | 
| 17-08-2011 07:52 | sheavy | Note Edited: 0003490 | bug_revision_view_page.php?rev_id=1754 | 
| 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 | bug_revision_view_page.php?bugnote_id=10290#r5043 | 
| 02-01-2013 05:45 | Fed | Note Edited: 0010290 | bug_revision_view_page.php?bugnote_id=10290#r5044 | 
| 02-01-2013 06:12 | Fed | Note Edited: 0010290 | bug_revision_view_page.php?bugnote_id=10290#r5045 | 
| 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 | bug_revision_view_page.php?rev_id=5047 | 
| 02-01-2013 10:28 | vdemidov | Note Added: 0010296 |  | 
| 02-01-2013 10:34 | Fed | Note Edited: 0010295 | bug_revision_view_page.php?rev_id=5048 | 
| 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 | bug_revision_view_page.php?rev_id=5050 | 
| 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 | bug_revision_view_page.php?rev_id=5052 | 
| 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 | bug_revision_view_page.php?rev_id=5064 | 
| 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 | bug_revision_view_page.php?bugnote_id=10290#r5067 | 
| 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 |  | 
| 08-08-2025 13:24 | zed | Category | Хотелка => Хотелка / Feature request | 
	| 
		Notes	 | 
	
		 
	 | 
	
		
		
			| 
				(0003513)
			 | 
		 
		
			| 
				gpsMax   
			 | 
		 
		
			| 
				18-08-2011 04:11   
							 | 
		 
		 
	 | 
	
		
		
			
				Да, надо было давно это вынести отдельным тикетом, спасибо. 
 
Из 137-й хотелки: 
Типа [галки] два - включена/выключена. Но при включении/выключении галки одновременно с этим включаются/выключаются галки для всех вложенных категорий. Вложенность же определяется динамически, из структуры категорий, а не из файла данных в готовом виде, поэтому менять его не потребуется. 
 
Тупо рекурсия: при включении/выключении галки пробегаем по вложенным категориям и применяем эту же операцию на них.			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0003547)
			 | 
		 
		
			| 
				zOn   
			 | 
		 
		
			| 
				19-08-2011 07:18   
							 | 
		 
		 
	 | 
	
		
		
			
				Не стал создавать отдельный баг, т.к. это видимо взаимосвязано: 
если поставить курсор на подкатегорию и нажать - удалить, то удалится и категория и подкатегория.			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0003555)
			 | 
		 
		
			| 
				Tolik   
			 | 
		 
		
			| 
				19-08-2011 07:51   
							 | 
		 
		 
	 | 
	
		
		
			| 
				только если в этой категории нет других подкатегорий.			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0003556)
			 | 
		 
		
			| 
				zOn   
			 | 
		 
		
			| 
				19-08-2011 07:54   
							 | 
		 
		 
	 | 
	
		
	 | 
	
		 
	 | 
	
		
		
			| 
				(0010290)
			 | 
		 
		
			| 
				Fed   
			 | 
		 
		
			
				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   
			 | 
		 
		
			| 
				05-01-2013 10:28   
							 | 
		 
		 
	 | 
	
		
		
			
				проверил, по логике и работе - всё ок! 
добавлять вышеуказанный код в исходник?			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				>добавлять вышеуказанный код в исходник? 
Ну я бы дал автору кода еще пару попыток сделать чистый пул реквест, который будет принят.			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0010347)
			 | 
		 
		
			| 
				Fed   
			 | 
		 
		
			| 
				06-01-2013 20:36   
							 | 
		 
		 
	 | 
	
		
		
			
				>>добавлять вышеуказанный код в исходник? 
>Ну я бы дал автору кода еще пару попыток сделать чистый пул реквест, который будет принят. 
Подскажите, пожалуйста, что значит "*чистый пул реквест*"? 
Спасибо, за помощь.			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			| 
				Ну претензии к прошлой попытке я в комментарии написал. С тех пор ветка уже ушла вперед, так что нужно сделать новый коммит и пул реквест.			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0010350)
			 | 
		 
		
			| 
				Fed   
			 | 
		 
		
			| 
				07-01-2013 05:30   
							 | 
		 
		 
	 | 
	
		
		
			
				Создал новый pull request. 
Сейчас правильно сделал? 
Спасибо, за помощь.			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				Теперь лучше, но есть пару замечаний: 
1. Оставлять неиспользуемые переменные на которые вылазят варнинги не стоит. Я это поправил на этот раз, но следующий раз просто не приму пул реквест. 
2. Контролам нужно давать осмысленные имена, а не CheckBox2, Panel1, CheckBox3. То что один из этих контролов уже существовал с таким именем - не оправдание.			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			| 
				Спасибо за вклад в разработку.			 | 
		 
		 
	 |