Преглед на файлове

#1087: the sort order on "group by" dashlets inside a dashboard is now saved as a user preference.

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@3744 a333f486-631f-4898-b8df-5754b55c2be0
dflaven преди 9 години
родител
ревизия
ddf1114534
променени са 2 файла, в които са добавени 30 реда и са изтрити 1 реда
  1. 2 0
      application/displayblock.class.inc.php
  2. 28 1
      js/utils.js

+ 2 - 0
application/displayblock.class.inc.php

@@ -446,6 +446,8 @@ class DisplayBlock
 				$sFormat = isset($aExtraParams['format']) ? $aExtraParams['format'] : 'UI:Pagination:HeaderNoSelection';
 				$sHtml .= $oPage->GetP(Dict::Format($sFormat, $iTotalCount));
 				$sHtml .= $oPage->GetTable($aAttribs, $aData);
+				
+				$oPage->add_ready_script("LoadGroupBySortOrder('$sId');\n$('#{$sId} table.listResults').unbind('sortEnd.group_by').bind('sortEnd.group_by', function() { SaveGroupBySortOrder('$sId', $(this)[0].config.sortList); })");
 			}
 			else
 			{

+ 28 - 1
js/utils.js

@@ -143,6 +143,33 @@ function ReloadBlock(divId, sStyle, sSerializedFilter, sExtraParams)
 	}
 }
 
+function SaveGroupBySortOrder(sTableId, aValues)
+{
+	var sDashboardId = $('#'+sTableId).closest('.dashboard_contents').attr('id');
+	var sPrefKey = 'GroupBy_'+sDashboardId+'_'+sTableId;
+	if (aValues.length != 0)
+	{
+		$sValue = JSON.stringify(aValues);
+		if (GetUserPreference(sPrefKey, null) != $sValue)
+		{
+			SetUserPreference(sPrefKey, $sValue, true);			
+		}
+	}
+}
+
+function LoadGroupBySortOrder(sTableId)
+{
+	var sDashboardId = $('#'+sTableId).closest('.dashboard_contents').attr('id');
+	var sPrefKey = 'GroupBy_'+sDashboardId+'_'+sTableId;
+	var sValues = GetUserPreference(sPrefKey, null);
+	if (sValues != null)
+	{
+		aValues = JSON.parse(sValues);
+		window.setTimeout(function () { $('#'+sTableId+' table.listResults').trigger('sorton', [aValues]); }, 50);
+	}
+	
+}
+
 /**
  * Update the display and value of a file input widget when the user picks a new file
  */ 
@@ -372,7 +399,7 @@ function PropagateCheckBox(bCurrValue, aFieldsList, bCheck)
 
 function FixTableSorter(table)
 {
-	if ($('th.header', table).length == 0)
+	if (table[0].config == undefined)
 	{
 		// Table is not sort-able, let's fix it
 		var checkbox = (table.find('th:first :checkbox').length > 0);