json-editor / json-editor

JSON Schema Based Editor
MIT License
4.43k stars 654 forks source link

pattern of greater than 35 chars doesn't display properly #140

Closed mrehder closed 5 years ago

mrehder commented 6 years ago

Expected behavior

GIven this variant in the pattern of a string "IDs": { "type": "array",

  "items": {
    "type": "string",
    "anyOf": [
      {
        "pattern": "^x$"
      },
      {
        "pattern": "123456789012345678901234567890123456"
      }
    ]
  },
  "minItems": 1,
  "description": "some description.",
  "uniqueItems": true
}

There should be a pick of the pattern to use.

Actual behavior

Only the first pattern is shown. A second pattern called "type" is shown.

Steps to reproduce the behavior

Use a pattern of greater than 35 char length in an anyOf of patterns. Any of the patterns and they show as "type" on the UI.

https://json-editor.github.io/json-editor/?schema=N4IgLglmA2CmIC4QAVYCcDOB7AdiANOAJ4AO8SWARgFawDGYBIasAjgK4QsAmiA2iACSAEQxMcAQwC28QhIDmskADMJANyxoosAPp0s0TU0U5u6JoboTIuJmTBiAuoRJosZNJFhiEoET9AwUnIQCTQ0CSImbSkA4jJEEAwwLRx5JgkcIgB5ZX5QEmswdDwkAD0ADwASEABffAKiksSARgAmAGYAFgBWADYAdgAOAE4ABnbu/uHxyd7B0YnO+brHepApCBxBYtjEFsIzDDotEhtSkAAlbyx2NDpYAAIRR7AsR4kSEmgiV4ALJ4sbB3B6POh/TKKV5YAB0THYOAgHFgO1gewQKXYsHWkhkiECwUSyVS6UO3hOEDOEFsSAAYlxkh9TI8ADISRm4pSbHAs2BpMB/RBdMmqdjQRhIABS6DRv2EmjwLiaaAuc2mizVC1my3V2qmdTkinx8RCW2KijQTDMovFiDaPUI3IgUnYUn2Q0dEgqztdiBGI3Wqg0WmKegMRl8JqJKS2pJUmik1kS+kMlsIkBgISDmm0YPDaZA1okYolIAAxMpVD0xmMDSATGZLZGggkkMTY0w+b6EAJE3AmMo0RJ+2tCJZrNTSgTWyAqLQGEwM/2kCysFZznY3B4vHE6FAos3CW2Y2krbAbaWAMqZR60iI4PfHLB15LWcjTkLt08i4u2pAAYQAQTrPcglfYpjRbT8TzjI4KSpGkQAAFT+CAMEeNDHhMdA324D52DeRNICsaAfkeZQ3Ckf4nlcWA1Gpdh0LAAB3d5lAgWBoG4MR0zRb430SYBgFAohanqR4hPA7FaiYZjrHBY0RMScdzhhJTCCk5S1wnXAYU0sSxJcWAHEgo9QnCSIBwTJMkDACRKH7dMoGXFBjJ4kAESRLFUXRTFYEIGI4igxI53oRgnMzRJUHCkBXHcdAd1M1sP2jElOxwbsBHXK0sDjSguF4QgWCpRzZwFcxnELc9f1LbhcrrTkkugtKDJ/Et8ijJA6rjRqkAAdWHYpLVqNYxKAAAA=&value=N4IgkgIgziBcDaIQF0A0IB2BDAtgUzhACk8AnPHATwAIIB7UjEdLAcwNgCYBWdAMywA3BgEsALngD6AYzoAbBoQDEfAdwAM65iHYYAJmUI4scgugXSsYkXSaxgAX3QAHPGJgJQYyq8J66rNrY+IQA6iYSpCAOyA5AAA=&prompt_before_delete&theme=bootstrap2&iconlib=fontawesome4&object_layout=normal&show_errors=interaction

pmk65 commented 5 years ago

@mrehder @schmunk42 @marc7000 @germanbisurgi I have pinpointed the problem to the "getDisplayText" function in "src/editor.js":

      else if(JSON.stringify(el).length < 50) name = JSON.stringify(el);
      else name = "type";

Doing a JSON.stringify on the el object with a pattern of 35 characters gives exactly the length 50. This also explains why the 2nd option gets the value "type".

I'm not sure why there is this 50 character limit (Don't want to change it if it breaks other functionality), but maybe someone can shed some light on this? (Changing the "50", to a higher value like "150", fixes the pattern problem)

pmk65 commented 5 years ago

If there are no objections, I'll go ahead and fix this by increasing the 50 value to 150.

schmunk42 commented 5 years ago

I think the value could be even higher, like 500. I don't know about issues with large patterns.

CC: @marc7000 @jdorn

mrehder commented 5 years ago

I agree is must be large. A regexp pattern for something like an ipv4/ipv6 address is quite large.

Thanks Mike

From: Tobias Munk [mailto:notifications@github.com] Sent: Monday, November 5, 2018 9:51 AM To: json-editor/json-editor json-editor@noreply.github.com Cc: Michael Rehder Michael.Rehder@Amdocs.com; Mention mention@noreply.github.com Subject: Re: [json-editor/json-editor] pattern of greater than 35 chars doesn't display properly (#140)

I think the value could be even higher, like 500. I don't know about issues with large patterns.

CC: @marc7000https://github.com/marc7000 @jdornhttps://github.com/jdorn

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/json-editor/json-editor/issues/140#issuecomment-435902366, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ALnH5-guvlgqc9A9Ae2mbC6aD0thXT1yks5usFBegaJpZM4VR2Ro. “Amdocs’ email platform is based on a third-party, worldwide, cloud-based system. Any emails sent to Amdocs will be processed and stored using such system and are accessible by third party providers of such system on a limited basis. Your sending of emails to Amdocs evidences your consent to the use of such system and such processing, storing and access”.

pmk65 commented 5 years ago

Ok. I have changed the 50 character limit to 500 now.