[ https://issues.apache.org/jira/browse/NETBEANS-2498?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matthias Bläsing resolved NETBEANS-2498. ---------------------------------------- Resolution: Invalid The typescript editor in Apache NetBeans is a recent addition and prior to 11.2 NetBeans did not support typescript. Most probably this is an external plugin. > A red dot appears on a Typescript file when there's no error in the file > ------------------------------------------------------------------------ > > Key: NETBEANS-2498 > URL: https://issues.apache.org/jira/browse/NETBEANS-2498 > Project: NetBeans > Issue Type: Bug > Components: editor - Other > Affects Versions: 8.2 > Environment: Windows 10 PRO > Reporter: PETER BORREGGINE > Priority: Major > > I have an error in my code but there's not any errors, I don't think. I'm > using the following: > > {{ Angular CLI: 1.7.4 Node: 8.11.1 OS: win32 x64 Angular: 5.2.11 ... > animations, common, compiler, compiler-cli, core, forms ... http, > platform-browser, platform-browser-dynamic ... platform-server, router > @angular/cdk: 5.2.4 @angular/cli: 1.7.4 @angular/language-service: 4.4.7 > @angular/material: 7.3.7 @angular-devkit/build-optimizer: 0.3.2 > @angular-devkit/core: 0.3.2 @angular-devkit/schematics: 0.3.2 > @ngtools/json-schema: 1.2.0 @ngtools/webpack: 1.10.2 @schematics/angular: > 0.3.2 @schematics/package-update: 0.3.2 typescript: 2.4.2 webpack: 3.11.0}} > > {{I get a RED DOT on my Typescript file and when I run ng serve, there are no > errors and everything compiles fine.}} > {{Is there a plugin or something that reveals what actually is wrong or going > on or is this an anomaly that I shouldn't concern myself with?}} > > {{Here's the code from my service that's showing a red dot.}} > > {{Sorry about the formatting issues... your code placeholder changed all my < > and > signs to unicode.... the link to the JQUERY that I was trying to > convert to Typescript is located in the comments. But there are missing > declarations for bgColor and content and missing comma's in some places. It's > badly written code. What I am trying to do is replicate what he did here: > [http://www.thepetedesign.com/demos/adaptive-modal_demo.html]}} > > {{Modal from Existing Container and Custom Styles is what I want to do in > Typescript and Angular.}} > > {code:java} > // code placeholder > import {Injectable} from '@angular/core'; > @Injectable() > export class ModalAdaptiveService { > constructor( > ) {} > public bgColor: string; > public content: string; > /* =========================================================== > * jquery.adpative-modal.js v1.0 > * =========================================================== > * Copyright 2014 Pete Rojwongsuriya. > * http://www.thepetedesign.com > * > * Adaptive Modal let you add a modal windows > * that can be morphed from anything > * > * https://github.com/peachananr/adaptive-modal > * > * License: GPL v3 > * > * ========================================================== */ > function($) { > let myThis = this; > let defaults = { > elementAnimateTime: 100, > customBgColor: "#333", > remoteUrl: false, > elementAnimateIn: "scaleShow", > elementAnimateOut: "scaleHide", > beforeAnimate: function (el, status) {}, > afterAnimate: function (el, status) {}, > /* Deafult Ajax Parameters */ > type: "GET", > async: true, > complete: function (xhr, text) {}, > cache: true, > error: function (xhr, text, e) {}, > global: true, > headers: {}, > statusCode: {}, > success: function (data, text, xhr) {}, > dataType: "html" > }; > // a function to replicate all styles from the original button > $.fn.getStyleObject = function () { > let dom = this.get(0); > let style; > let returns = {}; > if (window.getComputedStyle) { > let camelize = function (a, b) { > return b.toUpperCase(); > }; > style = window.getComputedStyle(dom, null); > for (let i = 0, l = style.length; i < l; i++) { > let prop = style[i]; > let camel = prop.replace(/\-([a-z])/g, camelize); > let val = style.getPropertyValue(prop); > returns[camel] = val; > }; > return returns; > }; > if (style = dom.currentStyle) { > for (let prop in style) { > returns[prop] = style[prop]; > }; > return returns; > }; > return this.css(); > } > // Function to detect remote URL > function urlCheck(url) { > if > (/^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url)) > { > return true; > } else { > return false; > } > } > // Function to run animation in sequence > function runAnimation(i, timeline, animations) { > setTimeout(function () { > if (typeof animations[i].beforeAnimate == 'function') > animations[i].beforeAnimate(); > if (animations[i].remove) { > if (animations[i].hide == true) { > $(animations[i].selector).removeClass(animations[i].remove).addClass(animations[i].step).one("animationend > webkitAnimationEnd oAnimationEnd MSAnimationEnd", function () { > $(this).hide(); > if (typeof animations[i].afterAnimate == 'function') > animations[i].afterAnimate(); > }); > } else { > $(animations[i].selector).removeClass(animations[i].remove).addClass(animations[i].step).show().one("animationend > webkitAnimationEnd oAnimationEnd MSAnimationEnd", function () { > if (typeof animations[i].afterAnimate == 'function') > animations[i].afterAnimate(); > }); > } > } else { > if (animations[i].hide == true) { > $(animations[i].selector).addClass(animations[i].step).one("animationend > webkitAnimationEnd oAnimationEnd MSAnimationEnd", function () { > $(this).hide() > if (typeof animations[i].afterAnimate == 'function') > animations[i].afterAnimate(); > }); > } else { > $(animations[i].selector).addClass(animations[i].step).show().one("animationend > webkitAnimationEnd oAnimationEnd MSAnimationEnd", function () { > if (typeof animations[i].afterAnimate == 'function') > animations[i].afterAnimate(); > }); > } > } > }, timeline); > } > $.fn.adaptiveModal = function (options) { > return this.each(function () { > let settings = $.extend({}, defaults, options), > el = $(this); > // Public Method to Open Modal Programatically > $.fn.openModal = function () { > let el = $(this), > className = el.data("am-custom-class") || "", > customBgColor = el.data("am-custom-bgcolor") || el.css('backgroundColor') || > settings.customBgColor, > h = el.outerHeight(), > w = el.outerWidth(), > posX = el.offset().left, > posY = el.offset().top - $(window).scrollTop(), > styles = el.getStyleObject(), > remote = ""; > // Prevent animation overlap when there's an ongoing animation > if (el.hasClass("am-animating")) { > return false; > } > if (typeof settings.beforeAnimate == 'function') settings.beforeAnimate(el, > "open"); > // Fallback default background color in case the button has no background > color available > if (el.css('backgroundColor') == "rgba(0 ,0 ,0 ,0)") customBgColor = > settings.customBgColor; > myThis.bgColor = customBgColor > // animation flag to true > el.addClass("am-animating"); > // Apply to remove URL only > if (el.data("remote") == true || settings.remoteUrl != false) { > myThis.content = "Loading.." > remote = "am-remote" > let type = (el.data("type")) ? el.data("type") : settings.type; > let href = el.attr("href") || settings.remoteUrl; > let datatype = (el.data("datatype")) ? el.data("datatype") : > settings.dataType; > // Call AJAX > $.ajax({ > type: type, > url: href, > async: settings.async, > complete: settings.complete, > cache: settings.cache, > error: settings.error, > global: settings.global, > headers: settings.headers, > statusCode: settings.statusCode, > success: function (data, text, xhr) { > // Animate Elements when ajax is completed > if (typeof settings.success == 'function') { > settings.success(data, text, xhr); > } else { > $(".am-remote").html(data) > } > $(".am-back > .am-modal-content > *").each(function () { > animations.push({ > time: 0, > step: "am-expanded", > selector: $(".am-back"), > beforeAnimate: function () { > $(".am-back").attr("style", "").css({ > background: myThis.bgColor, > minHeight: $(".am-back").height() > }); > } > }, { > time: settings.elementAnimateTime, > step: "animated " + settings.elementAnimateIn, > selector: this, > }); > }); > animations.push({ > time: 0, > step: "", > selector: $(".am-back"), > beforeAnimate: function () { > if (typeof settings.afterAnimate == 'function') settings.afterAnimate(el, > "open"); > el.removeClass("am-animating") > } > }); > let timeline = 0; > for (let i = 0; i < animations.length; i++) { > timeline = parseInt(animations[i].time, 10) + parseInt('0', 10); > runAnimation(i, timeline, animations); > } > }, > dataType: datatype > }); > } else { > // Use data-title or content from href if the link is not remote > myThis.content = el.data("title") || $(el.attr("href")).html() > } > // Create objects to be animated > $("body").append("<div class='am-overlay'><div > class='am-close-backdrop'></div><div class='am-modal " + className + "'><div > class='am-wrapper'></div></div></div>"); > el.clone().removeData("toggle").removeData("title").addClass("am-front").css(styles).appendTo(".am-modal > .am-wrapper"); > $(".am-modal .am-wrapper").append("<div class='am-back'><div > class='am-modal-content " + remote + "'>" + myThis.content + "</div></div>") > $(".am-modal").css({ > width: w, > height: h, > top: posY, > left: posX > }); > // Get real height of the object to animate correctly > $("body").prepend("<div class='am-sample'></div>") > $(".am-back").clone().addClass("am-expanded " + > className).appendTo(".am-sample"); > $(".am-sample .am-back").wrap("<div class='am-modal am-expanded " + className > + "'></div>"); > let realH = $(".am-sample .am-back").outerHeight(); > $(".am-sample").remove(); > $(".am-back").css({ > width: w, > height: h, > backgroundColor: myThis.bgColor > }); > // Add close button > $(".am-back").append("<a href='#' class='am-close'>×</a>") > // Close function > $(".am-back .am-close, .am-close-backdrop, .am-trigger-close").click(function > (e) { > el.closeModal(); > return false; > }); > // Complex series of class switching and CSS3 animation > let animations = [] > animations.push({ > time: 500, > step: "am-flipped", > selector: $(".am-modal"), > beforeAnimate: function () { > el.css({ > visibility: "hidden" > }); > } > }, { > time: 500, > step: "am-expanded", > selector: $(".am-modal"), > beforeAnimate: function () { > $(".am-modal").attr("style", ""); > } > }, { > time: 0, > step: "am-expanded", > selector: $(".am-back"), > beforeAnimate: function () { > $(".am-back").attr("style", "").css({ > background: myThis.bgColor, > height: realH, > minHeight: realH > }); > } > }, { > time: 500, > step: "", > selector: $(".am-back"), > beforeAnimate: function () { > if (!$(".am-back .am-modal-content").hasClass("am-remote")) { > $(".am-back").css({ > height: "auto" > }); > if (typeof settings.afterAnimate == 'function') settings.afterAnimate(el, > "open"); > el.removeClass("am-animating") > } > } > } > ); > // Animate elemtn directly under the modal one by one > $(".am-back > .am-modal-content > *").each(function () { > animations.push({ > time: settings.elementAnimateTime, > step: "animated scaleShow", > selector: this, > }); > }); > let timeline = 0; > for (let i = 0; i < animations.length; i++) { > timeline = parseInt(animations[i].time, 10) + parseInt('0', 10); > runAnimation(i, timeline, animations); > } > $("body").addClass("am-modal-open"); > } > // Public Method to Close Modal Programatically > $.fn.closeModal = function () { > let el2 = $(this), > className = el2.data("am-custom-class") || "", > animations = [], > h = el2.outerHeight(), > w = el2.outerWidth(), > posX = el2.offset().left, > posY = el2.offset().top - $(window).scrollTop(); > // Prevent animation overlap when there's an ongoing animation > if (el2.hasClass("am-animating")) { > return false; > } > if (typeof settings.beforeAnimate == 'function') settings.beforeAnimate(el2, > "close"); > // Toggle Animation to true > el2.addClass("am-animating"); > //Animate out modal content > $(".am-back > .am-modal-content > *").each(function () { > animations.push({ > time: settings.elementAnimateTime, > step: settings.elementAnimateOut, > remove: settings.elementAnimateIn, > selector: this, > }); > }); > // get real height to animate from > $("body").prepend("<div class='am-sample'></div>") > $(".am-back").clone().addClass("am-expanded " + > className).appendTo(".am-sample"); > $(".am-sample .am-back").wrap("<div class='am-modal am-expanded " + className > + "'></div>"); > let realH = $(".am-sample .am-back").outerHeight(); > $(".am-sample").remove(); > // complex series of class switching and CSS3 animations > animations.push({ > time: 0, > selector: $(".am-expanded"), > step: "", > beforeAnimate: function () { > $(".am-expanded").css({ > height: realH > }); > } > }, > { > time: 300, > remove: "am-expanded", > selector: $(".am-back"), > beforeAnimate: function () { > $(".am-back").css({ > width: w, > height: h, > top: posY, > left: posX, > minHeight: 0 > }); > } > }, > { > time: 0, > remove: "am-expanded", > selector: $(".am-modal"), > step: "", > beforeAnimate: function () { > $(".am-modal").css({ > width: w, > height: h, > top: posY, > left: posX > }); > } > }, > { > time: 200, > remove: "am-flipped", > step: "", > selector: $(".am-modal") > }, > { > time: 0, > step: "", > selector: $(".am-modal"), > beforeAnimate: function () { > el2.css({ > visibility: "visible" > }) > } > }, > { > time: 500, > remove: "am-modal-open", > step: "", > selector: $("body") > }, > { > time: 500, > step: "", > selector: $(".am-overlay"), > beforeAnimate: function () { > $(".am-overlay").remove(); > if (typeof settings.afterAnimate == 'function') settings.afterAnimate(el2, > "close"); > el2.removeClass("am-animating"); > } > }); > let timeline = 0; > for (let i = 0; i < animations.length; i++) { > timeline = parseInt(animations[i].time, 10) + parseInt('0', 10); > runAnimation(i, timeline, animations); > if (i - 1 == animations.length) { > console.log("Animations Length is equal to i - 1, in this case."); > } > } > } > // Determine the type of URL in the href attribute > if (el.attr("href").length > 0 && el.attr("href") != "#") { > if (!urlCheck(el.attr("href"))) $(el.attr("href")).hide(); > } > // Add button trigger > el.addClass("am-btn").click(function () { > el.openModal() > return false; > }); > }); > } > // Auto initialize when data-toggle='adaptive-modal' are present > $(document).ready(function () { > $("[data-toggle='adaptive-modal']").adaptiveModal(); > }); > }; > } > {code} > -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists