В вашем коде было несколько ошибок, поэтому я попытался исправить некоторые из них.
Элементы вашей диаграммы (т.е. столбцы и оси) должны быть добавлены в группу. Это позволит перемещать / переводить соответствующим образом по мере необходимости. Я создаю переменную chart
и назначаю эти элементы ей, а не непосредственно svg. Это упрощает просмотр структуры при просмотре в консоли.
Высота области легенды должна быть объявлена и учтена в таблице. Я объявил это как переменную legendh
и учел это в диапазоне оси Y.
Если вы хотите, чтобы ваша группа легенд появлялась под диаграммой, ее необходимо перевести под диаграмму. В вашем предыдущем преобразовании для упомянутой группы .attr('transform', 'translate(' + (padding + 12) + ',0)');
были заданы координаты y 0. Я изменил его на .attr('transform', 'translate(' + (padding + 12) + ','+ (height - legendh) + ')');
. Это говорит группе легенды двигаться вниз от вершины на величину height - legendh
, таким образом, помещая ее под диаграмму.
Наконец, цвета в легенде не совпадали с цветами в диаграмме / столбцах. Это было потому, что заполнение вашего бара было установлено d.key
, а заполнение легенды было основано на i
. Я решил сделать его равномерным и получить цвет, используя z(i)
.
Вот рабочий блок: https://bl.ocks.org/akulmehta/80153b35ab7498d30408f92cfa50f356
Вот рабочий код: [ 1121]
D3 Example
Сначала добавьте ссылку на WUApiLib "C:\windows\system32\Wuapi.dll"
Затем можно использовать этот фрагмент кода.
WUApiLib.AutomaticUpdatesClass auc = new WUApiLib.AutomaticUpdatesClass();
bool active = auc.ServiceEnabled;
MSDN: "Свойство ServiceEnabled указывает, доступны ли все компоненты, которых требуют Автоматические обновления,".
Установка auc. Настройки. NotificationLevel содержит информацию о текущем режиме. http://msdn.microsoft.com/en-us/library/aa385806 (По сравнению с 85) .aspx
Конечно, это - Ваш выбор сделать это, но запрашиваемый каждые несколько минут, что WindowsUpdate был выключен, были безусловно худшей проблемой удобства использования в XP.
Вы не хотите раздражать своих пользователей. Необходимо любить их. И определенно не нарушают в их частных делах как проверка, если WU выключен, потому что честно это не ваш бизнес.
Я полагаю, что можно сделать это при помощи Агента Windows Update API.
Посмотрите IAutomaticUpdates для специфических особенностей.
Можно проверить следующий ключ реестра.
HKEY_LOCAL_MACHINE
SOFTWARE
Microsoft
Active Setup
Installed Components
{89820200-ECBD-11cf-8B85-00AA005B4340}
Если его значение IsInstalled равняется 1 затем, Windows Update установлен.
Это было взято от:
Мне на самом деле ДЕЙСТВИТЕЛЬНО нравится другой ответ на этот вопрос, но к сожалению, он только поддерживается на XP SP3, который не мог бы быть выполнимым.
Кроме того, можно проверить, чтобы видеть, работает ли услуга Windows Update использование объектов ПРОЦЕССА.
Что-то вдоль этих строк:
Function CheckIfServiceIsRunning(ByVal serviceName As String) As Boolean
Dim mySC As ServiceProcess.ServiceController
mySC = New ServiceProcess.ServiceController(serviceName)
If mySC.Status = ServiceProcess.ServiceControllerStatus.Stopped Then
' Service isn't running
Return False
ElseIf mySC.Status = ServiceProcess.ServiceControllerStatus.Running Then
' Service already running
Return True
End If
End Function
если не изменяет память, применимый сервис называют "Wuauserv"