小编Ris*_*abh的帖子

带有正负值的不同环/弧的特殊圆环图

我想在D3中创建一种特殊的圆环图,其中包含正负值的不同环.值可以大于100%或小于-100%,因此将有一个代表剩余值的弧.以下是图表的示例图片:在此输入图像描述

第一个正类别(Category_1 - 灰色)值为80,因此80%用灰色填充圆圈,剩下20%用于下一个正类别.下一个正类别值(Category_2 - 橙色)是160.所以它首先使用Category_1剩下的20%(现在剩下140个值).然后将其填充所述下一个圆(向上)100%(现在剩下40值),并且对于剩余的值(40),它被向上创建部分圆.

现在,我们将Category_3(暗红色)视为负(-120%),因此如果创建一个向内的圆并将其填充100%(现在剩下20个值),那么它将为剩余值创建一个向内的弧(20 ).我们有另一个负类别(Category_4 - 红色),所以它会从那里以前的负类别(Category_3)结束开始,并从那里填写20%的面积.

编辑3:我创建了一个非常基本的基于圆弧的圆环图,当总值超过100时,我能够为剩余的值创建外环.下面是JSFiddle链接:

http://jsfiddle.net/rishabh1990/zmuqze80/

data = [20, 240];

var startAngle = 0;
var previousData = 0;
var exceedingData;
var cumulativeData = 0;
var remainder = 100;
var innerRadius = 60;
var outerRadius = 40;
var filledFlag;

var arc = d3.svg.arc()
  .innerRadius(innerRadius)
  .outerRadius(outerRadius)

for (var i = 0; i < data.length; i++) {

  filledFlag = 0;
  exceedingData = 0;

  console.log("---------- Iteration: " + (i + 1) + "---------");

  if (data[i] > remainder) { …
Run Code Online (Sandbox Code Playgroud)

html javascript d3.js

8
推荐指数
1
解决办法
488
查看次数

尝试使用ADAL.js AuthenticationContext获取访问令牌时,access_token与id_token相同吗?

我正在使用Azure AD对我的单页应用程序(Angular4)进行身份验证,并使用Adal.js进行相同的操作。在登录页面上,我单击重定向到Microsoft AAD的按钮,并在成功登录后将其重定向回应用程序主页,并id_token从JWT 接收用户信息。

我需要access_token进行后端API访问,这是我试图通过ADAL AuthenticationContextgetCachedToken()方法获取的,并将clientId作为参数发送:

this.context.getCachedToken(this.configService.AdalConfig.clientId)
Run Code Online (Sandbox Code Playgroud)

但是此方法返回的令牌与会话存储的令牌相同id_token (adal.idtoken)。它基本上是通过使用级联键在会话存储中创建一个新项目,其值与id_token

adal.access_token.key + clientId = id_token
Run Code Online (Sandbox Code Playgroud)

例如:adal.access_token.key239f6fc7-64d2-3t04-8gfd-501efc25adkd = <id-token-value>

我也尝试access_tokenAuthenticationContext.acquireToken()方法来获取,但是它也给了id_token回头。

我要去哪里错了?

编辑:发布代码。 我正在调用该函数login(),并在成功登录后,尝试通过中的get accessToken()属性访问器获取主页中的访问令牌adal.config.ts

config.service.ts

import { Injectable } from '@angular/core';

@Injectable()
export class ConfigService {
  constructor() {}
  public get AdalConfig(): any {
    return {
      tenant: 'common',
      clientId: <application-id>,
      redirectUri: window.location.origin + '/',
      postLogoutRedirectUri: window.location.origin + '/'
    }; …
Run Code Online (Sandbox Code Playgroud)

javascript azure-active-directory adal adal.js angular

7
推荐指数
1
解决办法
2271
查看次数

级联父子项从动态JSON数据中选择框

我已经从JSON数据动态创建了一些链式选择框,我将从服务器收到这些数据.链接/级联的工作方式是每个选择框都是具有以下属性的命名对象:

  1. 父属性:作为此选择框对象的父对象的对象的名称.
  2. 选项:选项对象的数组,其中每个对象包含:(a)选项值(b)父选项值 - 用于映射当前值的父选择框值.(c)选项ID.

  3. 选定选项:具有两个属性的对象:(a)当前选定的值(b)当前所选值的ID.

我在"选项"标签中使用ng-repeat创建选择框,或者在"select"标签中使用ng-option,然后我使用自定义过滤器,我通过匹配父选项值来过滤检索到的选项(2) (2> b)选项值(2> a)与其父对象的"当前选择值"(3> a).基本上使用自定义过滤器从子选项值到选定父值进行多对一映射.

在此输入图像描述

我能够正确映射父子选择框,但问题是当我更改父选择框值时,其子对象的"选定选项值"不会更新(子选择的项目不会抓取筛选列表中的第一项,导致孙子下拉不更新.)[1]

有没有办法,如果父值更改,子选择框(以及后续的子/孙)使用第一个选项值而不是当前空值初始化?

这是工作的plunker.(ng-repeat实施).真的很感激任何帮助.

这是另一个带有ng-options实现的plunker.

HTML(ng-repeat):

<div ng-repeat="selection in vm.selectionData">
    <div ng-repeat="(key, attribute) in selection.attributes">
      <span>{{key}}</span>
      <select class="form-control" ng-model="attribute.selectedOption.name">
        <option ng-repeat="option in attribute.options | optionFilter : selection.attributes[attribute.parentAttr]">{{option.name}}</option>
      </select>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

HTML(ng-options):

<div ng-repeat="selection in vm.selectionData">
    <div ng-repeat="(key, attribute) in selection.attributes">
      <span>{{key}}</span>
      <select ng-model="attribute.selectedOption" ng-options="attribute.name for attribute in (attribute.options | optionFilter : selection.attributes[attribute.parentAttr]) track by attribute.id">
      </select>
    </div>        
</div>
Run Code Online (Sandbox Code Playgroud)

JS:

myApp.filter('optionFilter', …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

5
推荐指数
1
解决办法
1138
查看次数

按顺序打开角度应用程序页面 - 第二页.打开回调不会被调用

我试图按顺序打开2个角应用页面,以使用phantomjs获取截图.第1页需要在第2页之前打开,因为它为第2页准备了一些数据.我使用以下两种嵌套setTimeout()函数:

var page = require('webpage').create(),
  t, url;

phantom.addCookie({
  'name': 'token',
  'value': '<authentication-token-goes-here>',
  'domain': 'localhost'
});

t = Date.now();
url = "http://localhost:8000/#/page1";

page.onConsoleMessage = function(msg, lineNum, sourceId) {
  console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};

page.viewportSize = {
  width: 1366,
  height: 768
};

page.clipRect = {
  top: 0,
  left: 0,
  width: 1366,
  height: 768
};

page.open(url, function(status) {

  setTimeout(function() {

    console.log('page 1 status: ', status);
    page.render("page1.png"); …
Run Code Online (Sandbox Code Playgroud)

javascript phantomjs angularjs

5
推荐指数
1
解决办法
202
查看次数

根据条件在 ng-repeat 内的 HTML 元素上应用 CSS 类

我正在尝试根据active变量使 HTML 标题处于活动/非活动状态。但要active在单击标题时设置标志,我使用指令$index变量ng-repeat

<div ng-init="active = 1">
  <h4 ng-repeat="(key, val) in vm.headings" ng-click="active = $index" ng-class="{'active': active === $index}">
{{key}}
</h4>
</div>
Run Code Online (Sandbox Code Playgroud)

标题对象:

vm.headings = {
    "HEADING_1": "CONTENT",
    "HEADING_2": "CONTENT",
    "HEADING_3": "CONTENT"
};
Run Code Online (Sandbox Code Playgroud)

第一次加载时,其中一个标题按设置显示为“活动”。但在随后的点击中,它没有给出预期的结果。单击它们后,所有标题都会变为活动状态。这是小提琴。

javascript angularjs

3
推荐指数
1
解决办法
612
查看次数

对包含 dd-mmm-yy 格式的日期的数组进行排序

我正在尝试使用以下sort()函数对包含字符串格式 (dd-mmm-yy) 日期的数组进行排序:

var array = ["1-jun-15", "1-feb-15", "1-apr-15", "1-may-15", "1-jan-15", "1-mar-15"];

array.sort(function(a, b) {
  return new Date(a).getTime() - new Date(b).getTime();
});
Run Code Online (Sandbox Code Playgroud)

但没有成功。

这里出了什么问题?这是 JSFiddle

编辑:虽然排序问题是通过小修正解决的,但主要问题是跨浏览器支持,下面的许多答案都有不同的解决方案。

javascript

2
推荐指数
1
解决办法
1366
查看次数