It can be used when,
All the y terms (including
dy) can be moved to one side of the equation, and
All the x terms (including dx) to the other side.
\[\frac{dx}{dy} = 4xy\ which\space can\space be\space written\space as, \\ \frac{dx}{x} = 4ydy\]
\[ The\space equation\space \frac{dy}{dx}-f(ax+by+c)\space can\space be\space written\space as \\ \frac{dy}{dx}-f(t)\space keeping\space ax+by+c = t\space then\space solve \]
A differential equation, M dx + N dy = 0, is homogeneous if replacement of x and y by λx and λy results in the original function multiplied by some power of λ, where the power of λ is called the degree of the original function. If so, follow these steps.
\[ Let\space y=vx\space so\space \frac{dy}{dx} = x\frac{dv}{dx}+v\]
\[Now\space put\space value\space of\space \frac{dy}{dx} in\space the\space equation\space and\space solve\]
When the equation is written in form
\[\frac{dy}{dx} + Py = Q,\space where\space P\space and\space Q\space are\space functions\space of\space x\space or , \\ \frac{dx}{dy} + Px = Q,\space where\space P\space and\space Q\space are\space functions\space of\space y\]
Then these can be solved by -
\[Let\space Integrating\space Factor(I)\space =\space e^{\int P\,dx} (for\space first\space equation\space) or, \\ I = e^{\int P \,dy}(for\space second\space equation)\]
Put in \[yI = \int {QI} + c\] and integrate to get the answer
\[a)\space xdy \,+\,ydx\,=\,d(xy)\]
\[b)\space dx \,\plusmn\,ydx\,=\,d(x \plusmn y)\]
\[c)\space xdx \,+\,ydy\,=\,\frac{1}{2}d(x^2+y^2)\]
\[d)\space \frac{xdy \,-\,ydx}{x^2}\,=\,d(\frac{y}{x})\]
\[e)\space \frac{xdy \,-\,ydx}{y^2}\,=\,-d(\frac{x}{y})\]
\[f)\space \frac{2xydx \,-\,x^2dy}{y^2}\,=\,d(\frac{x^2}{y})\]
\[g)\space \frac{xdy \,-\,ydx}{x^2+y^2}\,=\,d(tan^{-1}\frac{y}{x})\]
\[h)\space \frac{xdx \,+\,ydy}{\sqrt(x^2+y^2)}\,=\,\frac{1}{2}d(\frac{x^2+y^2}{\sqrt(x^2+y^2)})\]
\[i)\space \frac{ye^{x}dx\,-\,e^{x}dy}{y^2}\,=\,d(\frac{e^x}{y})\]
A diff. equation,
\[(\frac{d^n}{dx^{n}}+a_1\frac{d^{n-1}}{dx^{n-1}}+......a)y\space =\space Q\]
Where a1 , a2 ,............., an are constants
While Q is a function of x.
is called Linear differential equation of nth order first degree.
Above equation can be written as -
\[(D^n + a_1 D^{n-1} + a_2 D^{n-2}+....a_n) y\space =\space Q\space where,\, D -> \frac{d}{dx}\]
\[OR\]
\[f(D)\,y\,=\,Q\]
\[General\, Solution(y)\, =\, Complementary\, Function(y_c)\, +\, Particular\, Integral(y_p)\]
First of all consider, f(D).y=0
Put D = m and equate f(D) = 0 to get values of m
Case-1 : If m is real and distinct
\[y_c\space =\space C_1 e^{m_1 x} + C_2 e^{m_2 x} + .... \]
Case-2 : If m is real and equal
\[y_c\space =\space (C_1 + C_2 x + C_3 x^2 + ...) e^{mx}\]
Case-3 : If m is imaginary and distinct
\[y_c\space =\space e^{ax} (C_1 cos(bx)\space +\space C_2 sin(bx))\]
To find P.I. check the nature of Q
\[y_p= \frac{1}{f(D)}*Q\]
Case-1: If Q = eax
Put D = a to get the desired P.I.
\[y_p\, = \frac{1}{f(a)}*Q\]
Case-2: If Q = sin(ax) OR cos(ax)
Put D2 = -a2 and use identities of trigo to solve
\[y_p\, = \frac{1}{f(-a^2)}*Q\]
Case-3: If Q = xm
take out least degree term and use binomial expansion to solve
\[y_p\, =\,f(D)^{-1}\,.\,x^{m}\]
Case-4: If Q = eax.g(x) where, g(x) is a function of x
Take out eax by putting D to D+a and then solve
\[y_p\, =\, e^{ax}.\frac{1}{f(D+a)}.g(x)\]
Case-5: If Q = x.V (where, V is function of x)
\[y_p\, =\, x.\frac{1}{f(D)}.V\, +\, \frac{d}{dD}(\frac{1}{f(D)}).V \, (here,\, \frac{d}{dD}\, is\, nothing\, but\, ∫) \]
Case Of Failure: when f(a) or f(-a^2) or d(D+a) becomes 0
\[Note\, -In \, this\, case\, take\, out\, 'x'\, and\, diffrentiate\, the\, function.\]\[Repeat\, this\, step\, until\, the\, function\, not\, equals\, 0\]\[(As\, more\, than\, one\, case\, of\, failure\, can\, exist) \]
\[(For\, Q\, = e^{ax})\]
\[When\, f(a) = 0\,\]
\[y_p\,=\frac{1}{f(D)}.Q\,=x.\frac{1}{f(D)'}.Q\]
\[Repeat\, this\, step\,if\, you \, again\, get\, case\, of\, failure\]
A linear differential equation of the form,
\[x^{n} \frac{d^{n}y}{dx^{n}} + a_1x^{n-1}\frac{d^{n-1}y}{dx^{n-1}}+a_2 x^{n-2}\frac{d^{n-2}y}{dx^{n-2}}+.....+a_n y\space =\space Q\]
with a0, a1, . . . , an constants is called the homogeneous Euler-Cauchy equation of order n.
We introduce a new variable z where,
\[z\space =\space ln(x)\space or\space x\space =\space e^{z}\]
Then we change differentiation terms to
\[x\frac{d}{dx}\space =\space D\space,\space where\space D = \frac{d}{dz}\]
\[x^{2}\frac{d^{2}}{dx^{2}}\space =\space D(D-1)\space\space and\space\space x^{3}\frac{d^{3}}{dx^{3}}\space =\space D(D-1)(D-2) and\space so\space on\]
Now it reduces to linear differntial eqn with constant coefficients,find CF and PI to get solution and put back z = ln(x) to get final answer
A linear differential equation of the form,
\[(ax+b)^{n} \frac{d^{n}y}{dx^{n}} + a_1(ax+b)^{n-1}\frac{d^{n-1}y}{dx^{n-1}}+a_2 (ax+b)^{n-2}\frac{d^{n-2}y}{dx^{n-2}}+.....+a_n y\space =\space Q\]
Put ax+b = ez and solve line homogenous equations
\[(ax+b)\frac{dy}{dx}\space = \space bD\space (ax+b)^{2}\frac{d^{2}}{dx^{2}}\space =\space b^{2}D(D-1)\space and\space so\space on\]
Each equation in a system will be assumed to have constant coefficients and be of the general form
f(D)x + g(D)y + ....... + h(D)u = G(t)
where x, y, ...... , u are the dependent variables, t is the independent
variable.
A system of n equations in the n dependent variables x, y, ..... , u and independent variable t will have a solution consisting of n functions
x = x(t)
y = y(t)
.............
.............
u = u(t)
The method used to solve a system of n equations in n variables is analogous to the procedure used to solve a system of n linear equations in n unknowns in algebra. In algebra, we solve a system of n equations in n unknowns by eliminating unknowns between equations until we obtain an equation containing a single unknown, from which we deduce the value of the unknown. Then we substitute the value of that unknown into other equations to obtain the values of other unknowns. In solving systems of linear differential equations we go through the same type process to obtain an equation containing a single dependent variable. The equation in this single dependent variable will be a linear differential equation with constant coefficients. We then solve this equation, using methods for solving such equations, to obtain an expression for that dependent variable. We then substitute the expression for that variable into another equation to obtain an expression for another variable. As with the algebraic problem, we can also employ determinants.
Theorem. The number of constants in the general solution of a system of equations must equal the sum of the orders of the equations.
NOTE - The coefficient of second order derivative should be 1
Steps -
\[1.\space Compare\space the\space differential\space eqn\space with\space \frac{d^{2}y}{dx{2}}+P\frac{dy}{dx}+Qy\space =\space R\space and\space find\space value\space of\space P,Q,R\]
\[2.\space Apply\space conditions\space as\space per\space P,Q\space and\space find\space part\space of\space C.F.\space=\space u\]
\[3.\space Let\space y=uv\space be\space complete\space solution\space find\space \frac{dy}{dx},\frac{d^{2}y}{dx^{2}}\]
\[4.\space Put\space in\space original\space question\]
\[5.\space Put\space P=\frac{dv}{dx} and\space\space solve\space using\space first\space order\space eqn\]
\[6.\space Integrate\space P\space to\space get\space v and\space find\space complete\space solution \]
Steps -
\[1.\space Find\space u\space = e^{-\frac{1}{2}\int P\,dx}\space I=Q-\frac{1}{2}\frac{dP}{dx}-\frac{P^{2}}{4}\space and S=\frac{R}{u}\]
\[2.\space If\space I\space is\space a constant\space or \frac{constant}{x^{2}}\space then this method is applicable\]
\[3. \space Put\space values\space in\space \frac{d^{2}v}{dx^{2}}+Iv = S\space and\space it\space becomes\space differential\space eqn\space with\space constant\space coefficients\]
Steps -
\[1.\space Choose z such as (\frac{dz}{dx})^{2}\space = \space Q\]
\[2.\space Find \frac{d^{2}z}{dx^{2}}\]
\[3.\space Find\space P_1,Q_1,R_1\space\]
\[P_1\space =\space \frac{\frac{d^{2}z}{dx^{2}}+P\frac{dz}{dx}}{(\frac{dz}{dx})^{2}}\space,Q_1\space =\space \frac{Q}{(\frac{dz}{dx})^{2}}\space and\space R_1\space =\space \frac{R}{(\frac{dz}{dx})^{2}}\]
\[4.\space Put\space in\space \frac{d^{2}y}{dz^{2}}\space +\space P_1\frac{dy}{dx}\space +Q_1 y\space =\space R_1\space and\space solve\space using\space differential\space eqn\space with\space constant\space coeffiecients\]
Steps -
\[1.\space Convert\space to\space homogenous\space eqns\space by\space putting\space x\space =\space e^{z}\space and\space z\space =\space logx\]
\[2.\space Put\space x^{2}\frac{d^{2}y}{dx^{2}}\space =\space D(D-1)\space and\space x\frac{dy}{dx}\space =\space D,\space where\space D\space is\space \frac{d}{dz}\]
\[3.\space Solve\space for\space C.F.\space and\space let\space it\space be\space y\space =\space u+v\]
\[4.\space Find\space out\space u v_1 - v u_1\space where\space u_1\space =\space \frac{du}{dx}\]
\[5.\space Let\space the\space complete\space solution\space be\space y\space =\space Au+Bv\]
\[A\space =\space -\int\frac{Rv}{u v_1 - v u_1}\,dx\space +\space C_1\]
\[B\space =\space \int\frac{Ru}{u v_1 - v u_1}\,dx\space +\space C_2\]
\[6.\space Put\space in\space equation\space to\space get\space the\space answer\]


Please specify the type of building (Select only one option):
For residential building, please answer the following questions: (Click on ENTER or Tab each time) - The number of apartments in the building - The number of floors contained in the building - The number of basements contained in the building (Insert digits and click on ENTER or Tab)
For commercial building, please answer the following questions: (Click on ENTER or Tab each time) - The number of distinct businesses - The number of floors contained in the building - The number of basements contained in the building - The number of parking spaces available - The number of elevator cages to be deployedv(Insert digits and click on ENTER or Tab)
For corporate building, please answer the following questions: (Click on ENTER or Tab each time) - The number of separate tenent companies - The number of floors contained in the building - The number of basements contained in the building - The number of parking spaces available - The maximum number of occupants per floor (Insert digits and click on ENTER or Tab)
For hybride building, please answer the following questions: (Click on ENTER or Tab each time) - The number of distincts businesses - The number of floors contained in the building - The number of basements contained in the building - The number of parking spaces available - The maximum number of occupants per floor - The number of hours of activity of the building (Max 24H)
For more informations
Address: 725 Blvd Lebourgneuf. Quebec city, G2J 0C4, Qc, Canada. Phone: 1514-555-5555 Email: support@rocketelevator.com


News is information about current events. This may be provided through many different media: word of mouth, printing, postal systems, broadcasting, electronic communication, or through the testimony of observers and witnesses to events.
Common topics for news reports include war, government, politics, education, health, the environment, economy, business, fashion, and entertainment, as well as athletic events, quirky or unusual events. Government proclamations, concerning royal ceremonies, laws, taxes, public health, and criminals, have been dubbed news since ancient times. Technological and social developments, often driven by government communication and espionage networks, have increased the speed with which news can spread, as well as influenced its content. The genre of news as we know it today is closely associated with the newspaper.
Etymology
The English word "news" developed in the 14th century as a special use of the plural form of "new". In Middle English, the equivalent word was newes, like the French nouvelles and the German Neues. Similar developments are found in the Slavic languages – namely the Czech and Slovak noviny (from nový, "new"), the cognate Polish nowiny, the Bulgarian novini, and Russian novosti – and in the Celtic languages: the Welsh newyddion (from newydd) and the Cornish nowodhow (from nowydh). The myth that it was made after the first letters of the compass (North, East, West, South) is wrong.
Jessica Garretson Finch is credited with coining the phrase "current events" while teaching at Barnard College in the 1890s.
BoRdEa2@00
4/7/2021
Main Coment
BoRdEa2@00
4/7/2021
First Reply to the Comment
BoRdEa2@00
4/7/2021
Reply to Reply
BoRdEa2@00
4/7/2021
Second Reply to the Comment
BoRdEa2@00
4/8/2021
Text


Algorithms¶
SystemDS support different Machine learning algorithms out of the box.
As an example the lm algorithm can be used as follows:
# Import numpy and SystemDS matrix
import numpy as np
from systemds.context import SystemDSContext
from systemds.matrix import Matrix
from systemds.operator.algorithm import lm
# Set a seed
np.random.seed(0)
# Generate matrix of feature vectors
features = np.random.rand(10, 15)
# Generate a 1-column matrix of response values
y = np.random.rand(10, 1)
# compute the weights
with SystemDSContext() as sds:
weights = lm(Matrix(sds, features), Matrix(sds, y)).compute()
print(weights)
The output should be similar to:
[[-0.11538199]
[-0.20386541]
[-0.39956035]
[ 1.04078623]
[ 0.4327084 ]
[ 0.18954599]
[ 0.49858968]
[-0.26812763]
[ 0.09961844]
[-0.57000751]
[-0.43386048]
[ 0.55358873]
[-0.54638565]
[ 0.2205885 ]
[ 0.37957689]]


Levenshtein Distance
Used to compare the similarity of a node string attribute.
The Levenshtein Distance is calculated by comparing two strings, and
calculating the number of character additions, deletions, and substitutions
required to convert one string into the other.
Parameters
- Transaction Types -
Calculate on only the subgraph of transactions of these types
- Compare Attribute -
The node attribute to compare
- Maximum Distance -
Only draws links between nodes whose attributes are at most this far apart
- Case Insensitive -
Ignore case when comparing attribute
- Selected Only -
Compare selected nodes only


Exquisite Corpse
Collaborative webpage about a CU conspiracy theory, using GitHub.
Meet Shelby and learn about her previous web experience and interests.
Love letters to BASH, Git, and GitHub combined with standard operating procedures for each.
Collaborative webpage about a CU conspiracy theory, using GitHub.
The HTML5 boilerplate with added Sass capabilities.
Basic webpage utilizing ten compass sprites with hover states.
Fake website for a London tour company.
In class demo for learning to use floats.
Quotes from famous women displayed using flexbox.
A Day In The Life of Pluto as told through a parallax narrative.
A Day In The Life of Pluto as told through a parallax narrative.


Card Information
Exam
Exam: The most stressful part of college, an exam!
Defeats: Freshman
Loses to: Graduating Senior, Dog, Office Hours, Snow Day, Domino's
Multiplies with: Exam, Debt, Parking, 1.5GPA, "I Prefer Research" Professor
Freshman
Freshman: So innocent, so hopeful
Defeats: Nothing
Loses to: Exam, Graduating Senior, Debt, Dog, Mines Market, 1.5GPA, "I Prefer Research" Professor
Multiplies with: Freshman, Office Hours, Snow Day, Scholarship, Domino's
Graduating Senior
Graduating Senior: It's hard to care about much at this point
Defeats: Exam, Freshman
Loses to: Debt, Dog, Parking, 1.5GPA, "I Prefer Research" Professor
Multiplies with: Graduating Senior, Office Hours, Snow Day, Scholarship, Domino's
Debt
Debt: Tuition sucks
Defeats: Freshman, Graduating Senior
Loses to: Dog, Scholarship, Domino's
Multiplies with: Exam, Debt, Mines Market, 1.5GPA, "I Prefer Research" Professor
Dog
Dog: Good boy!
Defeats: Exam, Freshman, Senior, Debt, Office Hours, Parking, 1.5GPA, Domino's, "I Prefer Research" Professor
Loses to: Mines Market
Multiplies with: Dog, Snow Day
Mines Market
Mines Market: The sandwiches are ok
Defeats: Freshman, Dog, 1.5GPA
Loses to: Domino's
Multiplies with: Debt, Mines Market
Office Hours
Office Hours: Literally the best
Defeats: Exam, 1.5GPA
Loses to: Dog, Snow Day, Parking, "I Prefer Research" Professor
Multiplies with: Freshman, Graduating Senior, Office Hours, Domino's
Snow Day
Snow Day: NO SCHOOL!!!
Defeats: Exam, Office Hours, Parking, 1.5GPA, "I Prefer Research" Professor
Loses to: Nothing
Multiplies with: Freshman, Graduating Senior, Dog, Snow Day, Scholarship, Domino's
Scholarship
Scholarship: I love free money
Defeats: Debt
Loses to: 1.5GPA
Multiplies with: Freshman, Graduating Senior, Snow Day, Scholarship, Domino's
Parking
Parking: I guess I'll park at Safeway today...
Defeats: Graduating Senior, Office Hours, Domino's, "I Prefer Research" Professor
Loses to: Snow Day
Multiplies with: Exam, Parking
1.5GPA
1.5GPA: D's get degrees...?
Defeats: Freshman, Graduating Senior, Scholarship
Loses to: Dog, Mines Market, Office Hours, Snow Day, Domino's
Multiplies with: Exam, Debt, 1.5GPA, "I Prefer Research" Professor
Domino's
Domino's: Oooh, they deliver
Defeats: Exam, Debt, Mines Market, 1.5GPA
Loses to: Parking
Multiplies with: Freshman, Graduating Senior, Office Hours, Snow Day, Scholarship, Domino's
Professor
"I Prefer Research" Professor: Teaching? Students? What's that?
Defeats: Freshman, Graduating Senior, Office Hours
Loses to: Dog, Snow Day, Parking
Multiplies with: Exam, Debt, 1.5GPA, "I Prefer Research" Professor


Welcome to my site! It is dedicated to the art and craft of brewing fine beers. I started brewing my own
beer
back about 4 years ago. It all started by purchasing a
Brewing For Dummies book. At first I was overwhelmed by the process which can be
quite complex. Fortunately for beginners there are products and methods out there that are geared for
beginnners. My first brew was a success, I was
determined to learn more and produce even better beers. On my site you find what main indgrients make up a
beer, tools of the trade, my recipes and more. I hope you enjoy the site.
If you have any questions or want to contact me, check out my About Me page. Thanks for stopping by!


Martin Héroux is a physiotherapist by
training. He received his PhD from Queen's University and
completed a three year post-doctoral fellowship at the University
of British Columbia. Martin currently works at Neuroscience
Research Australia in Sydney where his research focuses on human
sensory and motor physiology in both health and disease. He is
interested in teaching computational skills to biomedical and
clinical scientists to improve research transparency and
reproducibility. Martin also
co-authors Scientifically
Sound, a blog on reproducible research in the digital age.


Distributed Gatling
Home
Cluster
Job
Job Tracker
Report
Repository
Sign Up
Login
Upload status
File to upload:
Name:
Project:
Name:
Data
Simulation
Config
Plugins


California Phase II Low Impact Development (LID) Sizing Tool
Basin Sizer
Hydrologic Analysis Tool
Struvite Tool
Water Quality Planning Tool
American River Basin Stormwater Resource Plan—Web Map


OTA Edit Help
Home
Map
Settings
Schemas
Mission Settings
Units, Features, and Specials
Commands
License
Units, Features, and Specials


Man Charged With Murdering Girlfriend Over ‘Problematic Love Triangle’
by Lucy ConnollyA man has been accused of murdering his girlfriend after he became involved in what prosecutors have called a ‘problematic love triangle’.
Advertisements
William Chase Hargrove, 29, is currently on trial for the 2017 murder of 27-year-old Anna Repkina, whose body was found in a remote area of woodland in Alsea, Oregon, after the young woman was apparently shot in the head.
The 29-year-old is accused of luring the young Russian woman from her home country with the promise of marriage, before killing her when it became clear his other girlfriend – a married woman – wasn’t happy with the situation.
Advertisements
Hargrove had been renting a room in Michelle Chavez’s home before Repkina arrived in the state, and the man had started an affair with Chavez, the The Washington Post reports. However, when Repkina came over to meet Hargrove, he began renting another place for the new couple straight away.
Prosecutors said a jealous Chavez allegedly ‘gave the defendant an ultimatum,’ and asked Hargrove to choose between her and the victim. ‘The defendant decided,’ they added.
Chavez told Hargrove to ‘get rid of her’, and even apparently threatened to do it herself, by saying she would ‘build a snowman’ – a ‘family joke’ about killing someone and hiding the body in a snowman in a place where it wouldn’t melt.
Instead, prosecutors claim Hargrove told Chavez he would ‘have this solved permanently’ the day after she gave him the ultimatum.
Advertisements
Prosecutor Amie Matusko told the judge:
He took the victim out to a very remote logging location and she was found shot dead in the back of her head, execution style.
Now, in a trial expected to last through most of November, prosecutors reportedly plan to present evidence showing the shotgun allegedly used to kill Repkina was discovered in Hargrove’s vehicle, and cellphone data that claims to place him at the scene of the crime.
However, Hargrove’s defence insists he is innocent, instead pointing the finger of blame at another person who was involved in the love triangle – Michelle Chavez.
Advertisements
Defence attorney Mike Flinn said in a statement last night:
Mr Hargrove has always maintained that he did not kill his fiancee. The evidence at trial will clearly show that Michelle Chavez murdered Anna Repkina.
Chavez is not charged with any crime, and denied any involvement in the murder from the witness stand last week, according to the Gazette-Times. Explaining their relationship during cross-examination, Chavez said Hargrove ‘knew when I met him that I’m not into monogamy.’
Although police initially had no leads in the murder, they began to look at Hargrove as a suspect after a receipt from a KFC restaurant was found close to Repkina’s body, which contained the name of one of the man’s friends, Kevin Thomas.
During a subsequent chat, Thomas told police Hargrove had asked to borrow his shotgun several days before Repkina’s murder and had not yet given it back.
Hargrove’s trial is ongoing.
If you have experienced a bereavement and would like to speak with someone in confidence contact Cruse Bereavement Care via their national helpline on 0808 808 1677.
A Broadcast Journalism Masters graduate who went on to achieve an NCTJ level 3 Diploma in Journalism, Lucy has done stints at ITV, BBC Inside Out and Key 103. While working as a journalist for UNILAD, Lucy has reported on breaking news stories while also writing features about mental health, cervical screening awareness, and Little Mix (who she is unapologetically obsessed with).


Log In
Email Address
Password
Don't you have your account?
Sign Up
Admin?
Go to Backstore
Facebook
Twitter
Instagram
Pinterest
Photos contributors:
NeONBRAND
on
Unsplash


4 years as a React Native OSS maintainer: a retrospective ↗
A personal retrospective of being a maintainer for React Native for the past 4 years.
In this section, I’ve tried to collect most of my written contributions across the web; for now no posts are hosted in this website but expect them to start appearing… soon ™


Class 17: Graphs I
04-09-2021
“One needs to do a serious amount of reading and writing, and not just thinking, in order to get anywhere serious in mathematics.”
Many situations in mathematics and computer science can be expresed by two things:
- A set of points
- Lines joining some pairs of points
And if we disregard the properties of the joins (length, shape, etc) and we only pay attention to which pairs are joined and which are not, then we arrive at the mathematical notion of a graph. Formally, we have:
Definition 1. A graph \(G\) is an ordered pair \((V, E)\), where \(V\) is some set and \(E\) is a set of 2-point subsets of \(V\). The elements of \(V\) are called vertices of the graph \(G\) and the elements of \(E\) edges of \(G\).
Definition 2. A directed graph \(G\) is an ordered pair \((V, E)\), where \(V\) is some set and \(E\) is a set pairs of elements of \(V\).
Now, we can express different situations using the definition of a graph and directed graph. For example.
The statement “Descartes loves Sofia and Sofia loves Descartes” can be expresed as a graph
\(G_1 = (V_1, E_1)\) where \(V_1 = \{\text{Descartes}, \text{Sofia}\}\) and \(E_1 = \{\{\text{Descartes}, \text{Sofia}\}\}\)
Similarly, it can be expresed as a directed graph
\(G_2 = (V_2, E_2)\) where \(V_2 = \{\text{Descartes}, \text{Sofia}\}\) and \(E_2 = \{(\text{Descartes}, \text{Sofia}), (\text{Sofia}, \text{Descartes})\}\)
Here \(E_{G}\) represents a relationship of love. In the same manner, we can define a graph to express some relationship between a set of elements.
Observation 1. If \((u, v) \in E_{G}\). It does not imply that \((v, u) \in E_{G}\)
Now, we understand the definition of a graph. Next, we need to known some popular graphs.
- Complete graph \(K_n\)
\(V = \{1, 2, \dots, n\}\)
\(E = V \times V \setminus \{\{u, u\}, u \in V\}\)
- Cycle \(C_n\)
\(V = \{1, 2, \dots, n\}\)
\(E = \{\{i, i + 1\}: i = 1, 2, \dots, n - 1\} \cup \{\{1, n\}\}\)
- Path \(P_n\)
\(V = \{0, 1, \dots, n\}\)
\(E = \{\{i - 1, i\}: i = 1, 2, \dots, n\}\)
- Complete bipartite graph \(K_{n, m}\)
\(V = \{u_1, \dots, u_n\} \cup \{v_1, \dots, v_m\}\)
\(E = \{\{u_i, v_j\}: i = 1, 2, \dots, n, j = 1, 2, \dots, m \}\)
Images taken from Invitation to Discrete Mathematics, pages 112, 113
There are different ways how we can represent a graph \(G = (V, E)\). Here we mention two:
- Adjacency matrix
It is a matrix \(A_G = (a_{ij})_{i,j=1}^n\) where
\[ a_{ij} = \begin{cases} 1 & \quad \text{if } \{v_i, v_j\} \in E \\ 0 & \quad \text{otherwise} \end{cases} \]
- Adjacency list
It is a computational representation using a list for each vertex to save the adjacent element of each vertex.
Images taken from Introduction to Algorithms - page 590
Obviously, the representation to use depends on the problem (consider space complexity, time access complexity, etc).
Now, let’s study an interesting advantage gained by using \(A_G\).
Definition 3. Let \(G = (V, E)\) be a graph. A path in \(G\) is a sequence:
\[(v_0, e_1, v_1, \dots, e_t, v_t)\]
where \(v_0, v_1, \dots, v_t\) are mutually distinct vertices of \(G\) and \(e_i = \{v_{i - 1}, v_i\} \in E(G): i = 1, 2, \dots, t\). Here we say that we have a path from \(v_0\) to \(v_t\) of length \(t\).
Similarly, we have:
Definition 4. Let \(G = (V, E)\) be a graph. A cycle in \(G\) is a sequence:
\[(v_0, e_1, v_1, \dots, e_{t-1}, v_{t-1}, e_t, v_0)\]
where \(v_0, v_1, \dots, v_{t-1}\) are mutually distinct vertices of \(G\), \(e_i = \{v_{i - 1}, v_i\} \in E(G): i = 1, 2, \dots, t-1\) and \(e_t = \{v_{t-1}, v_0\} \in E(G)\). Here we say that we have a cycle of length \(t\).
Proposition 1. Let \(G = (V, E)\) be a graph with \(V = \{v_1, v_2, \dots, v_n\}\). Let \(A = A_{G}\) be its adjacency matrix. Let \(A^k\) denothe the \(k\)th power of \(A\). Let \(a_{ij}^{(k)}\) denote the element at position \((i, j)\) of \(A^k\). Then, \(a_{ij}^{(k)}\) is the number of walks of length exactly \(k\) from vertex \(v_i\) to vertex \(v_j\) in the graph \(G\).
Proof: Left to the reader (use induction).
Definition 4. A graph \(G = (V, E)\) is connected if \(\forall x, y \in V(G)\), \(G\) contains a path from \(x\) to \(y\).
Property 1. The complement of a disconnected graph is connected.
Proof. Left to the reader.
Definition 5. Let \(G = (V, E)\) be a connected graph. We define the distance of two vertices \(v_1, v_2 \in V(G)\), denoted by \(d_G(v_1, v_2)\), as the length of the shortest path from \(v_1\) to \(v_2\) in \(G\). Hence \(d_G\) is a function, \(d_G: V \times V \to \mathbb{R}\), and it is called the distance function or the metric of the graph \(G\). It has the following properties:
\(d_G(v, v) \geq 0\) and \(d_G(v_1, v_2) = 0 \leftrightarrow v_1 = v_2\)
\(d_G(v_1, v_2) = d_G(v_2, v_1) \, \forall v_1, v_2 \in V(G)\)
\(d_G(v_1, v_2) \leq d_G(v_1, v_3) + d_G(v_3, v_2) \, \forall v_1, v_2, v_3 \in V(G)\)
Now, using definition 5 and proposition 1, we have the following corollaly.
Corollary 1. \(\forall v_i, v_j \in V(G), d_G(v_i, v_j) = \min(k \geq 0: a_{ij}^{(k)} \not = 0)\)
This corollaly is really important. First, notice how we have reduced the computation of \(d_G\) to matrix multiplication. One application of this idea is the following:
Property 2. A graph \(G\) contains a triangle (i.e. a \(K_3\)) \(\leftrightarrow \exists \, i, j \mid a_{ij}^{(1)} \not = 0 \land a_{ij}^{(2)} \not = 0\).
What if two graph have the same structure, but its vertices are named differently? We need a way to express this notion. That is the reason of the following definition.
Definition 6. Two graphs \(G = (V, E) \land G' = (V', E')\) are called isomorphic if a bijection \(f: V \to V'\) exists such that
\[\{x, y\} \in E \leftrightarrow \{f(x), f(y)\} \in E'\]
holds for all \(x, y \in V, x \not = y\). Such an \(f\) is called an isomorphism of the graphs \(G\) and \(G'\). The fact that \(G\) and \(G'\) are isomorphic is written as \(G \cong G'\).
Observation 2. The relation \(\cong\) (“to be isomorphic”) is a class of equivalence on any set of graphs.
Examples of isomorphic graphs taken from Invitation to Discrete Mathematics, page 114
Determining if two graphs are isomorphic is not at all an easy problem. It is suspected that no efficient algorithm exists, but for small graphs a brute force approach can be enough. In order to do it just check all the \(n!\) possible bijections. The implementation of this idea is simple using the following property:
Property 3. Two graphs \(G, G'\) are isomorphic if and only if a permutation matrix \(P\) exists such that \(A_G' = P A_G P^T\).
A matrix \(P\) is called a permutation matrix if its entries are 0 and 1 and each row and column contain preciely one 1.
Proof. Left to the reader.
Definition 7. Let \(G\) be a graph and \(v \in G(V)\). The degree of vertex \(v\) is defines as \(deg_G(v) = |\{e \in E(V), v \in e\}|\).
Now, we can formulate this famous statement:
Proposition 2. For each graph \(G = (V, E)\) we have:
\[\displaystyle\sum_{v \in V} deg_{G}(v) = 2 |E|\]
Proof. Exercise for the reader.
From the aboive proposition, we get a direct corollary.
Corollary 2 (Handshake lemma). The number of odd-degree vertices is even in any graph.
There are a lot of important properties about the topic. For instance.
Property 4. Let \(G\) be a graph in which all vertices have degree at least \(d\). Then, \(G\) contains a path of length \(d\).
Proof. Excercise for the reader.
Property 5. Let \(G\) be a graph with all vertices at least 3. Then \(G\) contains a cycle.
Proof. Excercise for the reader :D.
Definition 8. Let the vertices of a graph \(G\) be \(v_1, v_2, \dots, v_n\). The sequence
\[(deg_G(v_1), deg_G(v_2), \dots, deg_G(v_n))\]
is called the degree sequence of the graph \(G\), or a score of \(G\).
Next, a valid question to ask is: How can we known if a sequence of integers is a graph score or not?
Fortunately, we can answer the above question with the following theorem.
Theorem 1 (Score theorem). Let \(D = (d_1, d_2, \dots, d_n)\) de a sequence of natural numbers, \(n > 1\). Suppose that
\[d_1 \leq d_2 \leq \dots \leq d_n\]
Let \(D'\) denote the sequence \((d_1', d_2', \dots, d_{n-1}')\), where
\[ d'_i = \begin{cases} d_i & \quad \text{for } i < n - d_n\\ d_i - 1 & \quad \text{for } i \geq n - d_n \end{cases} \]
Then \(D\) is a graph score if and only if \(D'\) is a graph score.
Proof. Read Invitation to Discrete Mathematics, section 4.3.
There is a kind of graphs where problems become easier: trees. Let’s study them!
Definition 9. A tree is a connected graph containing no cycle.
This is the definition we will be using, but there are different ways how we can define them.
Theorem 2 (Tree characterization). The following conditions are all equivalent for a graph \(G = (V, E):\)
G is a tree.
(Path uniqueness) \(\forall x, y \in V(G),\) there exists exactly one path from \(x\) to \(y\).
(Minimal connected graph) \(G\) is connected and deleting any of its edges gives rise to a disconnected graph.
(Maximal graph without cycles) \(G\) contains no cycle and any graph arising from \(G\) by adding and edge already contains a cycle
(Euler’s formula) \(G\) is connected and \(|V| = |E| + 1\).
Proof. Left as exercise to the reader.
Definition 10. Let \(v\) be a vertex of a graph \(G = (V, E)\) with \(deg_G(v) = 1\). Then \(v\) is a end-vertex of \(G\) (a.k.a. leaf).
Some important properties of a graph are the following:
Property 6. Let \(G\) be a tree and \(v\) a leaf of \(G\), then \(G - v\) is a tree.
Proof. Left to the reader as exercise.
Property 7. Let \(G\) be a tree containing a vertex of degree \(k\), then \(G\) has at least \(k\) end-vertices.
Proof. Left to the reader as exercise.
Finally, we define the following two concepts:
Definition 11. A graph \(G\) where each component is a tree is called a forest.
This definition will be useful in next sections.
Definition 12. A graph \(G\) is called bipartite if the set \(V(G)\) can be divided into two disjoint sets \(V_1\) and \(V_2\) in such a way that each edge of \(G\) connects a vertex from \(V_1\) to a vertex of \(V_2\).
Observation 3. A tree is bipartite.
Moreover, we have this simple but useful property.
Property 8. A graph is bipartite is and only if it contains no cycle of odd length.
Proof. Left to the reader as exercise.
Now, we need a computational way to explore our graph and to find properties of them. So, let’s study two simple and powerful algorithms: BFS and DFS.
The idea is to start with a vertex an put it to a queue, then add its adjacents, then the adjacents of its adjacents, and so on.
The algorithm maintains the following properties for each vertex:
- Color: It describes the state of the vertex.
- WHITE: Not visited.
- BLACK: Visited.
- GRAY: Processing.
- d: The distance from the center.
- \(\pi\): The predecesor of the vertex (the one who put it to the queue).
BFS pseudocode. Taken from Introduction to Algorithms - page 595
Example operation of BFS. Taken from Introduction to Algorithms - page 596
Observation 4. It we start a BFS from vertex \(s\) in a graph \(G\). Then, it holds that for any edge \((u, v) \in E(V), d_G(s, u) \leq d_G(s, v) + 1\)
Observation 5. Suppose that we run a BFS on a graph \(G\) from vertex \(s\) and the order of vertices added to the queue are \((v_1, v_2, \dots, v_n)\). Then it holds:
\[d_G(s, v_1) \leq d_G(s, v_2) \leq \dots \leq d_G(s, v_n)\]
\[d_G(s, v_{i+1}) - d_G(s, v_i) \leq 1: i = 1, 2, 3, \dots, n - 1\]
Observation 6. If we run a BFS on a graph \(G\) from vertex \(s\), we can build a graph \(G_{\pi} = (V, E')\) where \(E' = \{(u.\pi, u): \, \forall u \in V(G), u \not = s\}\). \(G_{\pi}\) is known as the BFS tree and it represent the shortest path distance from \(s\) to the other vertices.
Observation 7. The running time of BFS algorithm is \(O(|V| + |E|)\) and its space complexity is \(O(|V|)\).
Here we present some common applications of BFS algorithm:
Find the connected components. Just run a BFS from every vertex if it has not been visited.
Check if a graph is bipartite. After the execution of the algorithm, there must not be an edge \((u, v)\) such that \(u.color = v.color\).
Find the shortest path from to vertex \(u\) to vertex \(v\). Run a BFS from \(u\), then find the unique path from \(u\) to \(v\) in the BFS tree.
Find the shortest cycle. Run a BFS from each vertex \(u \in V(G)\), then if during the exploration you find a vertex \(v\) such that \(v.color = GRAY\), then you have the shortest cycle from vertex \(u\).
The idea is to start with a vertex and explore recursively by each of its neighbors.
The algorithm maintains the following properties for each vertex:
- Color: It describes the state of the vertex.
- WHITE: Not visited.
- BLACK: Visited.
- GRAY: Processing.
- d: The discovered time of the vertex.
- f: The finished time of exploration of the vertex.
- \(\pi\): The predecesor of the vertex (the one who put it to the queue).
DFS pseudocode. Taken from Introduction to Algorithms - page 604
Example operation of DFS. Taken from Introduction to Algorithms - page 605
Moreover, if we run DFS algorithm on a graph \(G\), we can build a graph \(G_{\pi} = (V, E')\) where \(E' = \{(u.\pi, u): \, \forall u \in V(G), u.\pi \not = NIL\}\). \(G_{\pi}\) is known as the DFS tree or DFS forest if \(G\) has more than one component.
Observation 8. The running time of DFS algorithm is \(O(|V| + |E|)\) and its space complexity is \(O(|V|)\).
Definition 13. A rooted tree is a pair \((T, r)\), where \(T\) is a tree and \(r \in V(T)\) is a distinguished vertex of \(T\) called the root.
IMPORTANT. When you have a problem with trees, the very first idea is to root it.
Definition 14. If we run a DFS on a rooted tree \((T, r)\), we get a directed tree \(T_{\pi}\). Then, for two vertices \(x, y \in V(T)\), we say that \(x\) is an ancestor of \(y\) and \(y\) is a descendant of \(x\).
Observation 9. If we run DFS algorithm in a graph \(G = (V, E)\) for any two vertices \(u, v\), exactly one of the following three conditions holds:
\([u.d, u.f]\) and \([v.d, v.f]\) are disjoint, and neither \(u\) nor \(v\) is a descendant of the other in \(G_{\pi}\).
\([u.d, u.f]\) is entirely contained in \([v.d, v.f]\), and \(u\) is a descendant of \(v\) in \(G_{\pi}\).
\([v.d, v.f]\) is entirely contained in \([u.d, u.f]\), and \(v\) is a descendant of \(u\) in \(G_{\pi}\).
Furthermore, we can use the DFS algorithm to classify the edges of a graph \(G\). We have:
Tree edges are the edges in \(G.{\pi}\).
Back edges are the edges \((u, v) \in E(G)\) that connect \(u\) to an ancestor of \(v\) in \(G_{\pi}\).
Forward edges are the edges \((u, v) \in E(G)\) that connect \(u\) to a descendant of \(v\) in \(G_{\pi}\).
Cross edges are the edges \((u, v) \in E(G)\) that connect different components in \(G_{\pi}\).
Observation 10. If we run DFS algorithm in a tree \(G = (V, E)\), then every edge is a tree edge or a back edge.
The common applications of DFS algorithm will be study in another class in more depth.
Definition 15. For a vertex \(v\) in a graph \(G\), let the symbol \(ex_G(v) = \max(dis(v, u), u \in V(G))\). The number \(ex_G(v)\) is called the excentricity of the vertex \(v\) in the graph \(G\) and we have:
The diameter of a graph is defines as the maximum value of \(ex_G(v), \forall v \in V(G)\).
\(C(G) = \{v \in V(G): v = \min(ex_G(u), \forall u \in V(G)) \}\) is called the center of \(G\).
Now, how we can find the diameter of a graph?
Well, for a general graph we will study the solution in the next class. Now, we can study an \(O(|V| + |E|)\) solution for a tree.
It is possible to solve the problem using dynamic programming on trees, but there exists an easier greedy solution.
Image taken from Algorithms Live! - Episode 1 - Trees and Diameters. The proof can also be found in the video.
Now, we can try to solve a more interesting problem. How many unordered pairs \(\{u, v\}\) exists such that \(d_G(u, v)\) is the diameter of a tree?
The key idea to solve this problem is the following ideas:
Proposition 3. For any tree \(T\), \(C(T)\) has at most 2 vertices. If \(C(T)\) consists of 2 vertices \(x\) and \(y\) then \(\{x, y\} \in E(T)\).
Proof. Idea: Run a multi-source BFS from each leaf of the tree, the furthest vertices are \(C(T)\) (at most two). A formal proof can be found in Invitation to Discrete Mathematics, section 5.2.
Theorem 3. Let \(T\) be a tree and \(c \in C(T)\), then all vertices \(u, v\) that have a path \(P\) of length equal to the diameter of \(T\) hold that \(c \in P\).
Proof. Watch Algorithms Live! - Episode 1 - Trees and Diameters.
Now, we can solve the problem. First, lets separate the solution in two cases:
Image taken from Algorithms Live! - Episode 1 - Trees and Diameters.
Image taken from Algorithms Live! - Episode 1 - Trees and Diameters.
Previously, we say that graph isomorphism checking is a difficult problem, but the case is different when the graph is a tree.
First, let’s define some concepts.
Definition 16. A planted tree is a rooted tree \((T, r, \nu)\) plus a drawing of \(T\) in the plane. Here \(\nu\) represents an ordering of the vertices by how they appear (left-to-right order).
Definition 17. Let \((T, r), (T', r')\) be two rooted trees, then \(f: V(T) \to V(T')\) is an isomorphism of the rooted tres if \(f\) is an isomorphism of trees \(T\) and \(T'\) and \(f(r) = r'\). This is denoted by \((T, r) \cong' (T', r')\).
Definition 18. Let \((T, r, \nu), (T', r', \nu')\) be two planted trees, then \(f: V(T) \to V(T')\) is an isomorphism of the planted tres if \(f\) is an isomorphism of rooted trees \((T, r)\) and \((T', r')\) and it preserves the left-to-right ordering. This is denoted by \((T, r, \nu) \cong'' (T', r', \nu')\).
Examples taken from Invitation to Discrete Mathematics, page 161.
Now, we can define the coding of a planted tree as follow:
Each end-vertex distinct from the root is assigned the code \(01\).
Let \(v\) be the vertex with sons \(v_1, v_2, \dots, v_t\) (written in left-to-right order). If \(A_i\) is the code of the son \(v_i\), then the vertex \(v\) receives the code \(0 A_1 A_2 \dots A_t 1\).
Examples taken from Invitation to Discrete Mathematics, page 161.
Here, we can observe that the coding of a planted tree has length \(2 |V|\) and two planted trees are isomorphic if their coding are equal.
Next, we can extend this solution to work for rooted trees using the following enconding.
Each end-vertex distinct from the root is assigned the code \(01\).
Let \(v\) be the vertex with sons \(v_1, v_2, \dots, v_t\), such that \(A(v_1) \leq A(v_2) \leq \dots A(v_t)\) where \(A(x)\) represent the code of the son \(x\), then the vertex \(v\) receives the code \(0 A_1 A_2 \dots A_t 1\).
Now, it holds that two rooted trees are isomorphic if their coding (using the last enconding) are equal.
Finally, we can focus in solving the problem for a tree. From the previous achievements we realize that we can solve the problem if we find a vertex \(v\) to be used as the root that preserves the isomorphism and actually such a vertex is the center of the tree. Then, we can define the coding of a tree \(T\) as follow:
Case 1. If \(C(T) = \{c\}\), then the coding of \(T\) is the coding of \((T, c)\).
Case 2. If \(C(T) = \{c_1, c_2\}\), then the coding of \(T\) the minimum of the coding of \((T, c_1)\) and the coding of \((T, c_2)\).
Recommended readings:
- Introduction to Algorithms - Sections 22.1, 22.2, 22.3
- Invitation to Discrete Mathematics, chapter 4 and and sections 5.1, 5.2
- Algorithms Live! - Episode 1 - Trees and Diameters
- E-maxx Breadth-first search
- E-maxx Depth First Search
- The () Canonical Form of a Tree
You can find the contest here.


{% extends "soc/notification/base.html" %} {% comment %} Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. {% endcomment %} {% block content %}
{{ org_name }} {% if update %}has updated the {% else %}has a new{% endif %} slot transfer request, the details of which are as follows:
Number of slots to transfer: {{ slot_transfer.nr_slots }}
Remarks: {{ slot_transfer.remarks|safe }}


Change Log: bootstrap-fileinput
¶
- version 4.4.2 (under development)
- version 4.4.1
- version 4.4.0
- version 4.3.9
- version 4.3.8
- version 4.3.7
- version 4.3.6
- version 4.3.5
- version 4.3.4
- version 4.3.3
- version 4.3.2
- version 4.3.1
- version 4.3.0
- version 4.2.9
- version 4.2.8
- version 4.2.7
- version 4.2.6
- version 4.2.5
- version 4.2.4
- version 4.2.3
- version 4.2.2
- version 4.2.1
- version 4.2.0
- version 4.1.9
- version 4.1.8
- version 4.1.7
- version 4.1.6
- version 4.1.5
- version 4.1.4
- version 4.1.3
- version 4.1.2
- version 4.1.1
- version 4.1.0
- version 4.0.0
- version 3.0.0
- version 2.9.0
- version 2.8.0
- version 2.7.0
- version 2.6.0
- version 2.5.0
- version 2.4.0
- version 2.3.0
- version 2.2.0
- version 2.1.0
- version 2.0.0
- version 1.9.0
- version 1.8.0
- version 1.7.0
- version 1.6.0
- version 1.5.0
- version 1.0.0
version 4.4.2 (under development) ¶
Date: 24-Jun-2017
- (enh #1005): Update Dutch Translations.
- (enh #1004): New Krajee Explorer Font Awesome Theme.
- (bug #995): Correct and fix image load jquery event triggering for browser cache scenarios.
- (enh #991): Add Azerbaijan Translations.
- (enh #990): Ability to hide thumbnail content (
hideThumbnailContent
) and display only file name/size. - (enh #989): Update Chinese Translations.
- (enh #987): Zoom preview arrows orientation for RTL.
- (enh #986): Image width parsing and styling enhancements.
- (enh #985): Do not reset input when upload fails (single-upload mode).
- (enh #981): Update Hungarian Translations.
- (enh #977): Add RTL capability (new property
rtl
to be set) - includes newfileinput-rtl.css
(to be loaded afterfileinput.css
for RTL styling). - (enh #973): Add SCSS image path variable and file-image alt style updates.
version 4.4.1 ¶
Date: 25-May-2017
- (enh #980): Add new method
getFrames
to get all thumbnail frames as jQuery objects. - (enh #979): Add new method
getExif
to retrieve exif data for a selected jpeg image. - (enh #978, #974): Implement exif restoration for resized images via
piexif
plugin. - (enh #968): Update Turkish Translations.
- (enh #967): Correct file caption display for ajax upload mode when
showPreview
isfalse
.
version 4.4.0 ¶
Date: 13-May-2017
- (enh #966): Add Estonian Translations.
- (enh #965): New
required
andmsgFileRequired
properties. - (bug #958): Create
setTokens
string helper for easier replacement of tokens. - (bug #956): Correct initial preview file thumb deletions.
- (bug #955): Remove unnecessary
sourceMappingUrl
inpurify.min.js
. - (enh #954): Add minified theme assets.
- (enh #952): Auto orientation of image based on EXIF data (new property
autoOrientImage
). - (enh #950, #930): Add responsive support for Krajee Explorer theme for mobile devices.
- (enh #949): Sortable plugin enhancements and prevent scroll when dragging on mobile devices.
- Chronological ordering of issues for change log.
- (enh #947): Correct
showDelete
validation infileActionSettings
. - (enh #946): Enhance iconic preview validation to ignore extension case if possible.
- (enh #944): Publish v4.3.9 release to NPM.
- (enh #942): Enhance indicator and drag templates. New layout template
indicator
. - (enh #941): Correct
data-fileindex
validation. - (bug #940): Correct validation of
initialPreviewShowDelete
. - (enh #936): Enhance custom validation when ajax abort is triggered via event manipulation.
- (enh #934): Update Russian translations.
- (enh #929): Add Norwegian translations.
- (enh #926): Add Galician translations and update Spanish translations.
- (enh #924): Update Farsi Translations.
- (enh #921): Enhance zoom preview slide-show to show loading indicator during image change.
- (enh #920): Cancel ajax abort action more correctly.
- (bug #919): Fix resize validation.
- Parse all numeric properties correctly.
- (enh #915): Update default styling for zoom preview for object.
- (enh #910): New property
resizeIfMoreThan
to control image resize conditionally. - (bug #899): Fix multiple file selection for non-ajax scenario.
- (enh #477): Enhance and correct IE10 fileinput click misbehavior.
version 4.3.9 ¶
Date: 02-Apr-2017
- (enh #914): Update Portuguese BR translations.
- (enh #913): Better id parsing and resetting of uploaded file thumbnails.
- Enhance zoom preview styling for Krajee Explorer theme.
- More correct validation of
allowedFileTypes
to accept null values. - (enh #909): Update German Translations.
- (enh #906): Add Swedish Translations.
- (enh #905): Prevent duplicate files to be dragged and dropped.
- (enh #902): Enhance zoom preview styling for large height images.
- (bug #900): Correct
overwriteInitial
validation for async batch uploads returning dynamic initial preview post upload. - (enh #898): New plugin method to get files in preview and config.
- (enh #894, #895): Correct file size validation for empty files.
- (bug #893): Correct
file-success-remove
event handling. - (bug #890): Fix doubling of images for async bulk uploads when initial preview is returned via ajax response.
- Enhance uploaded thumb frames to not reset or change the frame identifier after successful upload.
- (enh #887): New properties
msgUploadBegin
andmsgUploadEnd
to display a better progress status. ThelayoutTemplates.progress
will support a new token{status}
. - Enhance events like
fileclear
andfilepreajax
to be aborted viaevent.preventDefault()
. - (enh #886): Append zoom modal dialog to
body
element if available to avoid multiple BS modals conflict. - (bug #885): Correct validation for
allowedFileTypes
. - (enh #875): Reset form based events more correctly to allow multiple bootstrap file inputs within forms.
- (bug #882): Correct image resize validation.
- (enh #881): Update Spanish Translations.
- (enh #863): New plugin method
zoom
with parameterframeId
to allow custom triggering of zoomed preview for each thumbnail frame.
version 4.3.8 ¶
Date: 21-Feb-2017
- (enh #879): Update Russian Translations.
- (enh #876): Update Spanish Translations.
- (enh #874): Enhance/Standardize CSS Styles for Krajee Default Theme.
- (bug #872): Correct typo in
bootstrap.min.css
. - (bug #870): Correct config.width parsing.
version 4.3.7 ¶
Date: 11-Feb-2017
- (enh #862): Launch a brand new Krajee theme:
explorer
. - (enh #861): New properties within
layoutTemplates
. - (enh #860): Initialize template defaults in a better manner.
- (enh #859): Enhance and revamp preview caching.
- (enh #858): Thumb Frame CSS class as configurable property.
- (enh #857): Default error handling for unknown ajax errors.
- (enh #854): Better file size calculation and display.
- (bug #852): Ensure
frameClass
setting ininitialPreviewConfig
is considered. - (enh #851): Create Kazakh Translations.
- (enh #847): Update German Translations.
- (enh #662, #725): Enhance preview modal to be appended to body before each zoom action (if
body
tag exists). - (enh #844): Display zoom preview navigation buttons only when multiple files exist.
- (bug #839): Correct
initialPreview
generation and sortable behavior for async uploads. - (enh #837): Update Czech Translations.
- (enh #835): Update Polish Translations.
- (bug #834): Correct clearing of file preview including zoom cache.
- (bug #833): Correct validation and defaults init for
allowedPreviewTypes
. - (enh #831): Update Finnish Translations.
- (enh #828): Allow drag sort of single uploaded thumbnails with
initialPreview
config set (post upload). - (bug #826): Extend language configuration to consider defaults.
- (bug #825): Correct
fileimagesresized
event triggering. - (enh #824): Add Korean Translations.
- (enh #823): Correct file indices assignment during validation of images.
- (enh #822): Enhancement for preventing upload when data is empty. New property
msgUploadEmpty
has been incorporated. - (enh #820): Prevent resize if image is smaller than allowed dimensions.
- (bug #819): Correct init preview auto replace post
uploadSingle
action in thumbnails. - (enh #816): New property
msgFileTypes
to control descriptions/localizations of file types displayed. - (enh #815): Enhance parsing of thumbnails that are visible in preview (will allow plugin to be initialized in hidden containers like tabs).
- (enh #812): Update Greek Translations.
version 4.3.6 ¶
Date: 17-Dec-2016
- (enh #809): Various enhancements for preview control and iconic thumbnails.
- add ability to control and render different previews for file thumbnails and zoomed preview content
- new property
preferIconicPreview
will try to parse thepreviewFileIconSettings
andpreviewFileExtSettings
to automatically force iconic previews for file thumbnails. - new property
preferIconicZoomPreview
will try to parse thepreviewFileIconSettings
andpreviewFileExtSettings
to automatically force iconic previews in the zoomed content. - the above properties will be applied and parsed for
initialPreview
content as well.
- (enh #804): Add Slovenian Translations.
- (enh #803): Update Hungarian Translations.
- (enh #802): Allow MOV files preview for supported devices and browsers.
- (enh #800): Update Spanish Translations.
- (enh #799): Fix IE memory issue on image load.
- (enh #791): Auto orientation of images based on EXIF data.
- (enh #788): New validation for minimum file size:
- new property
minFileSize
which validates the minimum file size in KB for upload, else throws a validation error usingmsgSizeTooSmall
. This defaults to0
. - if
minFileSize
is set tonull
, then above validation is skipped and no minimum file size check is performed.
- new property
- (enh #782): New validation for invalid slug file name (caption):
- if slug callback returns an empty string, then an error will be thrown using
msgInvalidFileName
. - if slug callback returns
false
then the next file will be read and current file skipped.
- if slug callback returns an empty string, then an error will be thrown using
- (enh #779, #789): More correct thumbnail identification post rearrange.
- (enh #769, #785, #786, #787): Better image resized event handling.
- (enh #771): Update Chinese Translations.
- (enh #764): Update Russian Translations.
- (enh #696): Better default preview zoom settings.
version 4.3.5 ¶
Date: 20-Sep-2016
- (bug #758): Correct file slug name parsing for an invalid file extension.
- (bug #753): Correct IE11 file clear bug when using without ajax.
- (enh #745): Update Russian Translations.
- (enh #741): Update Vietnamese Translations.
- (enh #736): Update Portugese Brazilian Translations.
- (bug #734): Correct right parsing of
fileuploaded
event params.
version 4.3.4 ¶
Date: 07-Aug-2016
- (enh #731): New method
getFilesCount
for returning upl + non-upl files count. - (enh #730): Correct Romanian Translations.
- (enh #729): Implement
progressUploadThreshold
to show processing when waiting for server response. - (enh #728): Change sortable plugin name to avoid conflict with JUI Sortable.
- (bug #722): Correctly concat ajax output in initial preview.
- (enh #721): Update Turkish Translations.
- (enh #719): Pass right
previewId
tofileuploaded
event. - (enh #718): Update Japanese Translations.
- (enh #715): Reset caption correctly on clear.
- Add contribution templates.
- (bug #710): Fix bug for
ifSet
validation.
version 4.3.3 ¶
Date: 09-Jul-2016
- (enh #706): Remove invalid files from filestack correctly for validation errors.
- (enh #704): Add grammatically correct "No files selected" message.
- (enh #702): Add files to stack correctly for max & min preview size validation.
- (bug #700): Fix custom preview icons to be displayed and validated correctly.
- (enh #698): Re-enable drag and drop support for IE Edge.
- (enh #695): Update Spanish Translations.
- (enh #680): Populate filestack for files greater than maxFilePreviewSize.
version 4.3.2 ¶
Date: 11-Jun-2016
- (enh #674): Organize all themes in a separate
themes
folder. - (enh #666): Update sortable draggable selector.
- (enh #655): Include sass styling configuration.
- (enh #654): Update Spanish Translations.
- (enh #650, #676): Ability to configure browse button display and file select via zone click.
- New boolean property
showBrowse
that allows you to control the display of the browse button - New boolean property
browseOnZoneClick
that allows you to select a file:- for ajax uploads - by clicking on the preview drag/drop zone
- for form based/non-ajax uploads - by setting
defaultPreviewContent
and that will be clickable to browse files
- New string message property
dropZoneClickTitle
that will be appended to thedragZoneTitle
for ajax uploads whenbrowseOnZoneClick
istrue
. - New template
actionDrag
will be available withinlayoutTemplates
to configure your drag indicator markup.
- New boolean property
- (enh #647): Display file size in previews and templates.
- Enhancements to file preview icons (
other
template). - Simpler naming for files in locales and themes folders.
- (enh #643):Implement rearranging / sorting functionality for initial preview.
- Add ability to rearrange and sort thumbnails by drag & drop. This feature will use the Sortable plugin which will be included in the
js/plugins
folder. - This feature will be available only for initial preview thumbnails for both ajax and form uploads.
- New property for drag indicator and drag behavior configurations will be included in
fileActionSettings
:showDrag
dragIcon
dragClass
dragTitle
dragSettings
- Add ability to rearrange and sort thumbnails by drag & drop. This feature will use the Sortable plugin which will be included in the
- (enh #642): Reorganize JS code into proper folders. Following folders will be added/maintained
locales
: all translation JS files will be located herethemes
: all theme JS files will be located hereplugins
: third party JS plugins that will be used to work with bootstrap-fileinput
- (enh #641): Wrap readFile(index + 1) in a function to prevent 'unsafe-eval' blocking with CSP.
- (enh #640): Ability to theme and provide font awesome theme. New property
theme
added. - (enh #639): Add ability to just require package in nodejs
- (enh #636): File action enhancements.
- Zoom and Drag buttons will be shown as an additional file action buttons in addition to
upload
andremove
- New boolean properties
showZoom
,showDrag
,showRemove
,showUpload
are now added tofileActionSettings
to control display of these buttons - New properties
zoomIcon
,zoomClass
,zoomTitle
are available withinfileActionSettings
for controlling the zoom button styles and display. - New properties
dragIcon
,dragClass
,dragTitle
are available withinfileActionSettings
for controlling the drag indicator styles and display. - New properties
actionZoom
andactionDrag
are available withinlayoutTemplates
to configure the markup of the zoom and drag buttons.
- Zoom and Drag buttons will be shown as an additional file action buttons in addition to
- (enh #635): Various preview enhancements. Previews will be revamped with various functionality:
- Add ability to zoom every thumbnail to a modal preview. So all types of files (images, videos, pdf, text etc) can be previewed in a larger zoom dialog window.
- Automatic slideshow like interface for zoom preview modal. One can navigate left or right to view previous or next content in the preview. In addition to button navigation, keyboard navigation (via left/right arrow keys) is also available.
- Borderless maximized mode and Full Screen mode available for preview.
- Auto disable the previous or next button when the first or last file/image is reached.
- Now
initialPreview
can be setup MORE easier without writing or returning entire markup. Thus the new functionality will enable to use built inpreviewTemplates
. - A new boolean property
initialPreviewAsData
is available to control the above. If set totrue
, it will allow developers to now pass just the data withininitialPreview
(instead of complete markup) and the markup will be auto generated usingpreviewTemplates
. - New property
initialPreviewFileType
to set the default file type for initial preview. Defaults toimage
. Must be on of the keys infileTypeSettings
. - All the other settings can be controlled via
initialPreviewConfig
. The new properties available withininitialPreviewConfig
are:type
: OverrideinitialPreviewFileType
at global level and set a separate type for each file in the initial preview.previewAsData
: boolean property to override theinitialPreviewAsData
setting at global level
- New zoom preview control buttons:
prev
next
fullscreen
borderless
toggleheader
close
- The other new settings to control zoomed preview:
previewZoomSettings
: Will allow to set the CSS style (e.g. width, height and other CSS style settings) for each zoomed content type (i.e.image
,pdf
,video
etc.).previewZoomButtonIcons
: Ability to set the labels for previous, next, fullscreen, borderless, and close buttons.previewZoomButtonTitles
: Ability to set the titles for previous, next, fullscreen, borderless, and close buttons.previewZoomButtonClasses
: Ability to set the CSS classes for previous, next, fullscreen, borderless, and close buttons.
- Modifications to all language locales JS for accomodating new translations
- (enh #634): Enhance ability for PDF and HTML preview.
- Enhanced PDF support as PDF embedding is now possible for
initialPreview
. In addition a new template for PDF is available withinpreviewTemplates
. - HTML Preview is enhanced with a better template. The plugin also now includes support for
DOMPurify
plugin (and available in plugins folder). This processes and cleans the HTML from XSS before previewing. This behavior can be controlled viapurifyHtml
property that defaults totrue
.
- Enhanced PDF support as PDF embedding is now possible for
- (enh #633): New property
maxFilePreviewSize
to control preview of large size files. - (enh #632): Find correct filename in IE9.
- (enh #618): Update German Translations.
- (enh #615): Correct Finnish Localizations.
- (enh #605): Fixed previewCache tags reset.
- (enh #604): Fixed unset method in deleting previewCache index.
- (enh #600): Synchronize latest package on NuGet.
- (bug #595): Correct initialization of
allowedPreviewTypes
.
version 4.3.1 ¶
Date: 28-Feb-2016
- (bug #577): Better label spacing for default browse icon.
- (bug #576): Correct previewCache initialization.
- (enh #575): Implement public method chaining and update docs for methods.
- (enh #574): Change naming convention for private / internal methods. Prepend internal plugin methods with underscore
_
. - (enh #573): Update package.json to include
peerDependencies
. - (enh #572): Add Finnish Translations.
- (enh #567): New properties and improved messages.
- (enh #565): Enhance progress bar display when upload is aborted or cancelled.
- (enh #560): Update French Translations.
- (enh #559): Allow custom error display styles (e.g. via bootstrap dialog) through these changes:
- added
msg
param infileerror
,fileuploaderror
, andfilefoldererror
events.
- added
- (enh #557): Enhance default file type parsing to intelligently not render unpreviewable content.
- (enh #555): Set default value for
removeFromPreviewOnError
tofalse
. - (enh #554): Update documentation and demos to include
webkitdirectory
for upload. - (enh #514): Set default value for
removeFromPreviewOnError
tofalse
.
version 4.3.0 ¶
Date: 25-Jan-2016
- (enh #550): Correct Drag and drop issue with v4.2.9.
version 4.2.9 ¶
Date: 22-Jan-2016
- (enh #545): Refactor code to deep extend options correctly.
- (enh #541): Improve default slug callback to accept most characters.
- (enh #534, enh #535): Ability to remove errored file thumbnails via
removeFromPreviewOnError
. - (enh #531): Enhance/Fix typos of Arabic translation.
- (enh #530): Error alert box and preview thumbnail styling enhancements.
- (enh #523): Add new branch
sass
forbootstrap-sass-official
support. - (enh #521): Update Dutch Translations.
- (enh #489): Update documentation for
change
andfileselect
events.
version 4.2.8 ¶
Date: 18-Nov-2015
- (enh #494): Add Indonesian translations.
- (enh #490): Fix
zh-TW
translationbrowseLabel
wording. - (enh #488): Publish to npm.
- (bug #483): Clear and reset native input after uploading each single file thumbnail.
- (enh #481): Universal Module Definition for use with CommonJS, AMD or browser globals.
- (enh #474): Upload via button within each preview thumbnail skips last file for async uploads.
- (enh #477): Fix IE10 specific styling bug for file input block button.
- (enh #465): Add Català translations.
- (enh #462): Responsive buttons and new property
buttonLabelClass
. - (enh #460): Update CSS selectors prefix to start with
file
. - (enh #454): Update Turkish Translations.
- (enh #449): Add Arabic Translations.
- Implement package.json.
- Update bootstrap bower version to support only 3.x variants.
version 4.2.7 ¶
Date: 13-Sep-2015
- (bug #442); Enhance the filenames parsing in the filestack and slug conversion.
- (enh #437): New property
defaultPreviewContent
to control a default preview. - (enh #436): New property
showClose
and new layout templateclose
to control close icon display. - (enh #434): Added Japanese translations.
- (enh #433): Added new events for image handling.
fileimageloaded
(fires after each image is loaded in preview) - this is an existing eventfileimagesloaded
(fires after all images are loaded in preview)fileimageresized
(fires after each image in preview is resized)fileimagesresized
(fires after all images in preview are resized)fileimageresizeerror
(fires when any image resize error is faced)
- (enh #432): Send slugged file names with the file blob when uploading via ajax.
- (enh #431): Add Danish locale translations.
- (bug #429): Fix for MS Edge bug that does not support drag and drop.
- (enh #428): Enhancements to asynchronous uploads when
showPreview
isfalse
. - (enh #427): Add image resizing capability before upload.
- (bug #420): Revamp file status progress and positioning updates for asynchronous upload.
version 4.2.6 ¶
Date: 26-Aug-2015
- (enh #426): Enhancements to progress bar and display thumbnail specific progress.
- (enh #413): Various updates to translations.
- (enh #412): Enhancements to file upload cancellation.
- (enh #410): Better validation for IE 10 and below.
- (enh #405): Create traditional Chinese translations.
- (enh #401): Various enhancements to preview file thumbnails and error validations.
- (bug #398): Validate
data.errorkeys
more correctly. - (enh #393): Minor enhancements to abort events before upload.
- (enh #392): Enhancements to allow using plugin functions directly.
- (enh #391): Thumbnail styling enhancements for flash, html, and object types.
- (enh #390): Thumbnail error display enhancements.
- (enh #389): New templates and styling enhancements to caption and main buttons.
- (enh #387): Reset
initialCaption
better when preview is cleared. - (enh #385): Updated Russian & Ukranian translations.
- (enh #382): Better implementation for parsing text in
parseError
method. - Update translations to include
fileActionSettings
. - (enh #380, #381): Consistent styling for thumbnails.
- (enh #379): Combine more translatable settings and update locale js files.
- (enh #378): Ability to configure different icon thumbnails for preview files.
- (enh #377): Various enhancements to text preview.
- (enh #373): Default delete ajax request type to POST (instead of DELETE).
version 4.2.5 ¶
Date: 27-Jul-2015
- (enh #372): Create new event
filepreajax
. - (enh #371): Ability to replace files in the preview. New
autoReplace
property. - (bug #370): Reverts #342 with better fix.
- (enh #362): Add Bulgarian translations.
version 4.2.4 ¶
Date: 22-Jul-2015
- (enh #358): Implement event namespaces and enhance event handling process.
- (enh #357): Enhanced and better
refresh
method. - (enh #356): Implement
destroy
method. - (enh #351): Updates to Ukranian & Russian translations.
- (enh #342): Add ability to modify extra data before ajax upload in
beforeSend
events. - (enh #340): Receive
previewId
andindex
in extra data for individual thumbnail uploads (ajax).
version 4.2.3 ¶
Date: 21-Jun-2015
- (enh #336): Fixes to reset preview via
initUploadSuccess
.
version 4.2.2 ¶
Date: 18-Jun-2015
- (enh #332): Bump nuget and bower package versions.
version 4.2.1 ¶
Date: 15-Jun-2015
- (enh #330): Minor enhancements in validating preview and progress bar display.
- (enh #329): Message translation updates.
- (bug #328): Implement image dimension validations.
- New properties added to the plugin:
minImageWidth
minImageHeight
maxImageWidth
maxImageHeight
msgImageWidthSmall
msgImageHeightSmall
msgImageWidthLarge
msgImageHeightLarge
- New properties added to the plugin:
- (bug #327): More correct clearing of preview.
- (bug #315): Fix parsing of preview settings for default (other) preview.
- (bug #310): Set missing caption icon on error.
- (enh #309): Fixes for older browsers.
- (enh #308): Better check for
data.error
being empty. - (enh #307): Allow setting thumbnail frame css class and attributes via
initialPreviewConfig
. - (enh #305): Implement better cleanup of memory with
revokeObjectURL
. - (enh #303): Validate only files to be dragged and dropped.
- (enh #302): Add Greek (el) translations.
- (enh #299): Enhancements for displaying uploaded file thumbnails.
- New property
showUploadedThumbs
that will display uploaded thumbnails until the remove/clear button is explicitly pressed. - New event
filesuccessremove
. This will be triggered on removing the uploaded thumbnail using the thumbnail delete button. The event shares the following parameters:id
: the HTML id attribute of the thumbnail container Theevent
can be set to returnfalse
to abort the thumbnail removal.
- New property
- (enh #297): Add Romanian translations.
- (enh #296): Fixed license identifiers in bower.json and composer.json.
- (bug #295): Validate
overwriteInitial
correctly for ajax uploads. - (enh #287): Add Brazilian Portugese (pt-BR) translations.
- (enh #279, #280): Fixed error for failed response types.
version 4.2.0 ¶
Date: 11-May-2015
- (enh #277): New
language
property to allow configuring multi lang widgets on same page. - (enh #275): Add Czech & Slovakian translations.
version 4.1.9 ¶
Date: 02-May-2015
- (bug #273): Reset caption correctly after all initial preview is deleted.
- (enh #271): Add Dutch translations.
- (enh #270): Add Portugese translations.
- (enh #269, #272): Add Turkish translations.
- (enh #264): Validate input type of file before initializing plugin.
- (enh #263): Enhance parsing of file preview thumbnails and actions.
- (enh #259): Add Polish translations.
- (enh #258): Enhance messages to include file plural and single.
- (bug #257): Fix upload single to replace thumbs correctly.
- (bug #253): Fix initial preview delete cache initialization.
- (enh #252): Enhance async batch completion.
- (enh #251): Add Italian localizations.
- (enh #250): Change default slug routine to allow umlauts in filenames.
- (bug #249): Fix error message content display.
- (enh #248): keep chinese characters in file caption.
- (bug #247): Correct mime types validation.
- (enh #245): Allow initial caption to be set without initial preview.
- (enh #244): Add Serbian translations.
- (bug #243): Correct sending of
deleteExtraData
. - (enh #241): Enhancements to initial preview delete to perform validations before delete.
- (bug #238): Correct initialization of plugin variables when other than maxFileCount & maxFileSize.
- (enh #237): Better styling of file caption icon.
- (enh #232): Update docs to reflect updated bootstrap CDN domain.
version 4.1.8 ¶
Date: 30-Mar-2015
- (enh #230): More correct initial preview delete reset.
- (enh #229): Created French translations.
- (enh #228): Created Thai translations.
- (enh #227): Created Ukranian translations and updated Russian translations.
- (enh #226): Create Spanish (Latin American) translations.
- (enh #225): Create Russian translations.
- (enh #222): Enhance to include dynamically replaceable thumbnail tags. Two new properties
previewThumbTags
andinitialPreviewThumbTags
will be available for configuration. - (enh #218): Do not clear preview for ajaxuploads until remove button clicked.
- (enh #217): Ensure
filebatchselected
event is triggered after FileReader completes reading files selected. - (enh #216): Add Hungarian Translations.
- (enh #215): Set default delete method REST compliant.
- (enh #213): Code cleanup, eliminate change event on clear and properly reset preview cache after ajax deletes.
- (enh #212): Revamp preview to use a new preview caching object.
- (enh #211): Add ability to show detailed server error stack via
showAjaxErrorDetails
. - (enh #209): Better validation for folder drag and drop and auto-skip any dropped folders. New property
msgFoldersNotAllowed
added to the plugin to allow configuring the message shown. The eventfilefoldererror
is triggered when a folder is dragged. - (enh #206): Ability to add custom validation and trigger custom error to abort upload.
- This enhancement will enable you to add your additional custom validations to enhance the fileinput to be used for innumerous scenarios. It will allow an ability to return an associative object with any of the fileinput events (except the error events and the
filebatchuploadsuccess
orfilebatchuploadcomplete
) e.g.change
,fileselect
,filepreupload
,filebatchpreupload
etc. The object can return the following keys:message
: string, the validation error message to be displayed before upload. If this is set the plugin will automatically abort the upload whenever called and display this as an error message. You can use this property for example to read a file and perform your own custom validation.data
: object, an optional associative array of additional data that you can pass for usage later.
- You can get this data by reading
abortData
in the parameters for the newfilecustomerror
event. This new event will be triggered during upload, when you have triggered an abort from any of the other events.
- This enhancement will enable you to add your additional custom validations to enhance the fileinput to be used for innumerous scenarios. It will allow an ability to return an associative object with any of the fileinput events (except the error events and the
- (enh #205): Allow to auto set initialPreview within
filebatchuploadcomplete
&filebatchuploadsuccess
.- Allows you to auto define the
initialPreview
andinitialPreviewConfig
after an ajax upload by returning these within the data object from your ajax response onfileuploaded
&filebatchuploadsuccess
.
- Allows you to auto define the
- (enh #204): New properties
fileMinCount
andmsgFilesTooLess
(useful to make file input mandatory).- The
fileMinCount
property will allow to set the minimum file count needed before triggering upload. It will work for bothajax
uploads andnormal form based submission
. - This will enable you to set the file input to be a mandatory / required input. (e.g.
fileMinCount
=1
). ThemsgFilesTooLess
will be displayed and error raised. - If
fileMinCount
is set to0
it will be treated as files are optional and no error will be triggered.
- The
- (enh #203): Enhancements and revamp of all error events.
- fileerror
- fileuploaderror
- filebatchuploaderror
- filedeleteerror
- filefoldererror (new event - see #209)
- filecustomerror (new event - see #206)
- (enh #202): Ability to add Translations / Locales.
- Identify and group all messages that need to be translated configurable via
$.fn.fileinput.locales['<lang-code>']
- Set default english messages configuration
$.fn.fileinput.locales['en']
within the plugin core code - Individual locale files need to be created as separate js files e.g.
<lang>.js
- Identify and group all messages that need to be translated configurable via
- (bug #193): Better validation for triggering
filebatchuploadcomplete
on async batch upload completion. - (enh #192): Ability to extend and add one's own ajax settings.
- New property
ajaxDeleteSettings
to help extend and add to delete ajax settings. ajaxSettings
to help extend and add upload ajax settings
- New property
- (enh #189): Reinitialize initial preview delete events correctly on file selection.
- (enh #188): Clear fileinput more correctly for all browsers when initialPreview is set enhancement
- (enh #187): New property
previewFileIcon
to configure file icon shown in preview for unreadable file types. - (enh #184): Fix documentation for filedeleted event.
- (enh #183): Delete extra data enhancements.
- (enh #181): Fix change event triggered for IE 11 when file input is set to empty.
- (enh #179): Validate and cast
maxFileSize
andmaxFileCount
to numeric - even if they have been setup as a string. - (enh #178): Updated README for cancel button configuration.
- (enh #177): Trigger filebatchpreupload if showPreview is
false
. - (enh #176): Wrong file in README installation steps fixed.
- (enh #175): Ability to override delete extra data in
initialPreviewConfig
. - (enh #174): New
deleteUrl
property. - (enh #167, #173): New
deleteExtraData
property for ajax deletions. - (bug #171): Fix typo for files validation.
version 4.1.7 ¶
Date: 13-Feb-2015
- Relocate sample files from examples directory to bootstrap-fileinput-samples repo.
- Set copyright year to current.
- (enh #162): New property ajaxSettings to allow configuring ajax params.
- (bug #160): Correct documentation typo for usage.
- (bug #159): Ensure filestack is passed correctly with
outData
for events. - (enh #157): Upload progress bar styling enhancements.
- Allow upload progress bar css class to be configurable
- Create and allow two different styles/css classes for progress bar
progressClass
: styling for progress bar when upload is in processprogressCompleteClass
: styling for progress bar when upload is complete
- (enh #156): Fix reset of file stack for various upload modes (single, batch async and batch sync).
- (enh #155): Allow display of long file names without spaces/word breaks.
- (enh #154): Code cleanup and restructure for JS lint changes (using JSHint Code cleanup library).
- (enh #153): Improve error handler for trapping FileReader security exceptions and new property
msgFileSecured
will display the security exception message. - (enh #152): New faster
replaceAll
method instead of regexp parsing to replace tags in templates. - (enh #151): New
filebatchselected
event triggered after every batch of files are selected. - (enh #149): Custom tags support for layoutTemplates and previewTemplates (new properties
customLayoutTags
andcustomPreviewTags
included).
version 4.1.6 ¶
Date: 20-Jan-2015
- (enh #139): Reset file stack correctly on ajax upload completion.
- (enh #137): Trigger new events -
filedisabled
andfileenabled
. - (enh #136):Create new upload method that can be called externally.
- (enh #131): Allow empty values in extra data to be submitted.
version 4.1.5 ¶
Date: 12-Jan-2015
- (enh #121): Animate progress bars by default for upload progress.
- (bug #120): Correct multiple iterations of upload for async batch uploads.
- (enh #119): Enhance caption to include ellipsis for long file names
- (enh #116): Hide remove and upload buttons until unless file(s) are selected.
- (enh #115): Autosize file caption responsively on window resize.
- (bug #114): Prevent multiple file selection when using single file configuration.
- (bug #113): Icon layout template undefined when using user template.
- (bug #112): Fix undefined filestack for individual file upload within preview.
- (enh #108): Add nuget package.
- (enh #106): Enhance events for ajax requests and enable cancelling sync uploads
- (enh #105): Expose current jqXHR object on ajax events.
- (bug #104): Fix formdata not defined.
- (bug #100, #101): Set right params for error thrown during reading of files.
version 4.1.4 ¶
Date: 26-Dec-2014
- (bug #97): Reset events correctly with plugin refresh method.
- (bug #95): Correct event off for drag & drop in plugin refresh method.
- Code cleanup with reusable methods for event raising and outData generation.
- (enh #93): Better styling of file upload icon indicators in thumbnails.
- (enh #92): Realign event triggering timing for batch uploads to ensure outData is available.
- (enh #91): Pass FileReader instance with outData in events.
- (enh #90): New event
filebatchpreupload
for both synchronous and asynchronous batch uploads. - (enh #89): New
otherActionButtons
to allow adding customized initial preview content actions. - (enh #88): Allow uploadExtraData to be passed as a callback.
version 4.1.3 ¶
Date: 20-Dec-2014
- (enh #87): More correct progress indicator percentage for asynchronous upload.
filepreupload
fileuploaded
fileuploaderror
filebatchuploaderror
filebatchuploadsuccess
filebatchuploadcomplete
- (enh #86): Disable thumbnail action buttons when upload is in progress.
- (enh #85): Combine output data as a single object, that is sent for various file upload events.
version 4.1.2 ¶
Date: 19-Dec-2014
- (enh #81): Add new events:
filebatchuploadsuccess
filebatchuploadcomplete
- (enh #80): Allow access to
uploadExtraData
andresponseData
to following eventsfilepreupload
fileuploaded
fileuploaderror
filebatchuploaderror
filebatchuploadsuccess
filebatchuploadcomplete
filelock
fileunlock
version 4.1.1 ¶
Date: 18-Dec-2014
- (bug #78): Set uploadExtraData parameters to be correctly sent via POST.
- (bug #76): Update filestack when
showPreview
is false. - (enh #58): Set a new property
textEncoding
for reading the text files with right encoding.
version 4.1.0 ¶
Date: 17-Dec-2014
- (enh #75): Better validation of browser support for drag and drop.
- (enh #74): Enhancements to file validation errors for both FORM and AJAX uploads.
- For normal Form based uploads automatically disable the Upload button
- Display a separate error styled thumbnail for the file that faced the validation error.
- Reset errors correctly to overwrite files with a new change or drag/drop
version 4.0.0 ¶
Date: 14-Dec-2014
- (bug #72): Fix bootstrap ## version constraint.
- Renamed
initialDelimiter
toinitialPreviewDelimiter
- (enh #70): Version 4.0 enhancements.
Version 4.0 Features ¶
- Add functionality for AJAX based UPLOAD using HTML5 FormData (most modern browsers support it). Will degrade to normal Form Based File submission if this is not supported.
- To use AJAX Upload, the
uploadUrl
property is MANDATORY and must be set. - Enhance plugin to now allow files to be added, appended, removed (based on FEEDBACK from many). Thus one can append files to preview.
- New DRAG & DROP zone available in preview to drag and drop files and append.
- Delete or upload files one by one OR in batch.
- If
showPreview
is set to false, or uploadUrl is not supported plugin will degrade to normal form based upload. - Configurable indicators for file awaiting upload, file successfully uploaded, files errored in upload.
- Ability to add extra form data with ajax based uploads.
- Upload progress bar and individual thumbnail upload indicators.
- Ability to cancel and abort ongoing AJAX uploads.
- Templates have been revamped and enhanced for each file type.
- Ensure plugin is still lean in size and optimized for performance inspite of the above features by optimally utilizing HTML5 & jquery features only.
New properties added ¶
showCancel
: shows a cancel button for aborting ajax uploads (defaults totrue
).cancelLabel
: label for the cancel button.cancelTitle
: title for the cancel button on hover.cancelIcon
: icon markup for the cancel buttoncancelClass
: CSS class for the cancel button.removeTitle
: title for the remove button on hover.uploadTitle
: title for the upload button on hover.uploadUrl
: the url that will be used to process AJAX based uploads (using FormData XHR2).uploadExtraData
: extra data that will be passed as data to the url/AJAX server call via POSTuploadAsync
: whether the batch upload of multiple files will be asynchronous/in parallel. Defaults totrue
.initialPreviewShowDelete
: shows a delete button for each initial preview content's thumbnail (defaults totrue
).initialPreviewConfig
: configuration for setting up eachinitialPreviewContent
item (associative array/object)caption
: The caption or filename to display for each initial preview item content.width
: The CSS width of the image/content displayed.url
: The URL for deleting the image/content via AJAX (shown only forinitialPreviewContent
).key
: The key that will be passed to the URL via POST (shown only forinitialPreviewContent
).
dropZoneEnabled
: Enable a drag and drop zone for dragging files and is available only for ajax based uploads (defaults totrue
).dropZoneTitle
: Title to be displayed in the drag & drop zone.dropZoneTitleClass
: CSS class for the drag & drop zone title.fileActionSettings
: configuration for setting up actions for newly selected file thumbnails in the preview (associative array/object)removeIcon
: icon for remove button to be displayed in each file thumbnail.removeClass
: CSS class for the remove button in each file thumbnail.removeTitle
: title for remove button in each file thumbnail.uploadIcon
: icon for upload button to be displayed in each file thumbnail.uploadClass
: CSS class for the remove button in each file thumbnail.uploadTitle
: title for remove button in each file thumbnail.indicatorNew
: an indicator (HTML markup) for new pending upload displayed in each file thumbnail.indicatorSuccess
: an indicator (HTML markup) for successful upload displayed in each file thumbnail.indicatorError
: an indicator (HTML markup) for error in upload displayed in each file thumbnail.indicatorLoading
: an indicator (HTML markup) for ongoing upload displayed in each file thumbnail.indicatorNewTitle
: title to display on hover of indicator for new pending upload in each file thumbnail.indicatorSuccessTitle
: title to display on hover of indicator for successful in each file thumbnail.indicatorErrorTitle
: title to display on hover of indicator for error in upload in each file thumbnail.indicatorLoadingTitle
: title to display on hover of indicator for ongoing upload in each file thumbnail.
version 3.0.0 ¶
Date: 08-Dec-2014
- (bug #68): Fix refresh method of the fileinput to trigger change correctly.
- (enh #67): Enhance support for IE browsers
- Add specific validations for parsing IE versions rightly
- Enhance plugin to extend styling support to IE 9 (with the limitation that IE 9 does not support HTML 5 features like multiple file upload)
- Fix clearing of file input rightly for IE 9 & IE 10
- Degrade plugin automatically to a native file input for older IE versions
- Prevent change method firing twice when file is cleared after error is encountered in IE 11.
- (enh #65): Correct validation of
refreshPreview
usingupdateFileDetails
. - (enh #64): Add ability to override the slug method with a
slugCallback
property. - (bug #61): Refresh preview to show errors correctly after each file is validated.
- (enh #60): Enhance upload button for disable/enable when used with
<a>
tag.
version 2.9.0 ¶
Date: 23-Nov-2014
- (enh #56): Trigger new events
filebrowse
andfileselectnone
. - (enh #55): Clear the files when file browse dialog is cancelled only if the browser clears the native file input.
- (enh #53): Validations and events for right reset of files when browse button is clicked.
version 2.8.0 ¶
Date: 13-Nov-2014
- (enh #52): Raise new
fileimageloaded
event. - (enh #51): Autosize preview images when they exceed the size of the preview container.
- (enh #50): Dynamically auto size file captions for long file names exceeding container width. New property
autoFitCaption
is added which defaults totrue
. When this istrue
the plugin will auto fit caption text within the container dynamically and responsively based on window size.
version 2.7.0 ¶
Date: 11-Nov-2014
- (enh #49): Set image preview dimensions to auto fit and center
- (enh #48): Trigger
fileloaded
event whenshowPreview
isfalse
. - Set release to stable in composer.json.
version 2.6.0 ¶
Date: 15-Oct-2014
- (bug #44): Browser IE10 hangs on file clear.
- (bug #43): Validate special characters in filename before generating caption.
- (enh #42): Enhance plugin to configure the
elErrorContainer
for displaying validation errors. - Templatize errorContainer for display within the preview window.
- (bug #40): More correct fix for IE (ver < 11) inability to clear fileinput values.
version 2.5.0 ¶
Date: 09-Oct-2014
- (bug #40): Fix IE (ver < 11) inability to clear fileinput values.
- (bug #39): HTML encode caption hover title.
- (enh #38): Highlight error CSS in file caption on validation error.
- (bug #37): HTML encode text content for preview in modal.
- (enh #36): New feature. Validation routine for checking allowed file types and extensions.
version 2.4.0 ¶
Date: 20-Sep-2014
- (enh #33): Better text format validation and correct modal preview.
- (enh #32): Added checks for file api support.
- (enh #31): Better control and configuration of preview templates.
- (enh #30): Enhanced generic support for more preview formats (audio, video, html, flash, and other objects).
Note: There are BC Breaking Changes with release v2.4.0.
With release v2.4.0, the plugin has been revamped to support and configure a wide variety of file formats for preview. This may break some backward compatibility (BC) for older versions that use custom templates.
The following are the major changes with release v2.4.0:
- Plugin has been revamped to build preview intelligence based on various file preview types. The inbuilt file support types are categorized as
image
,text
,html
,video
,audio
,flash
,object
, andother
. allowedPreviewTypes
: You can now configure which all file types are allowed to be shown as a preview. This defaults to['image', 'html', 'text', 'video', 'audio', 'flash', 'object']
. Thus all file types are treated as an object to preview by default. For exampleTo preview onlyimage
andvideo
, you can set this to['image', 'video']
.allowedPreviewMimeTypes
: In addition toallowedPreviewTypes
, you can also control which all mime types can be displayed for preview. This defaults to null, meaning all mime types are supported.layoutTemplates
: Allows you to configure all layout template settings within one property. The layout objects that can be configured are:main1
,main2
,preview
,caption
, andmodal
.previewTemplates
: All preview templates for each preview type have been combined into one property, instead of separate templates for image, text etc. The keys are the formats as set inallowedPreviewTypes
and values are the templates used for previewing. There are default prebuilt templates for each preview file type (generic
,image
,text
,html
,video
,audio
,flash
,object
, andother
). Thegeneric
template is used only for displayinginitialPreview
content using direct markup.previewSettings
: Allows you to configure width and height for each preview image type. The plugin has default widths and heights predefined for each type i.eimage
,text
,html
,video
,audio
,flash
, andobject
.fileTypeSettings
: Allows you to configure and identify each preview file type using a callback. The plugin has default callbacks predefined to identify each type i.eimage
,text
,html
,video
,audio
,flash
, andobject
.- Replacing tags within templates has been enhanced. With this release it will automatically check for multiple occurrences of each tag to replace within a template string.
Note: Flash preview will require Shockwave flash to be installed and supported by the client browser. The flash preview currently works successfully with webkit browsers only. Video & Audio formats are however supported by all modern browsers that support the HTML5
video
/audio
tags. Note that browsers have limited number of video/audio formats supported by the HTML5 video element (e.g. mp4, webm, ogg, mp3, wav). The size of video files are recommended to be small (to be controlled throughmaxFileSize
property) so that it does not affect the preview performance. You can copy a few files from theexamples
directory of this plugin repo, to test a few examples of flash and video files.
version 2.3.0 ¶
Date: 19-Sep-2014
- Better replacement of tags in templates. Replaces all tag occurences with this new release.
- (enh #28, #29): Added support for previewing flash and video files.
version 2.2.0 ¶
Date: 19-Aug-2014
- (enh #25): Graceful degrade to normal file input for older browsers (including previous versions of Safari).
- (enh #24): Update readAsBinaryString to readAsArrayBuffer
version 2.1.0 ¶
Date: 11-Aug-2014
- Other minor bug fixes.
- (enh #22): Enhance file caption message display for validation errors.
- (enh #21): Enhance loading progress message and message templates for multiple file uploads.
- (enh #21): Enhance multiple file upload and preview performance using setTimeout.
- (enh #20): Fix
fileloaded
event to incrementpreviewId
and enhance to return file index. - (enh #19): Synchronize preview with file browse dialog behavior, when cancel button is pressed in file dialog window.
- (enh #18): Better validation for older browsers (not supporting HTML5) to degrade to normal file input.
- Enhanced plugin to improve browser performance when loading and previewing multiple image files.
- New configurable error messages added:
msgFilesTooMany
,msgFileNotFound
,msgFileNotReadable
,msgFilePreviewAborted
, andmsgFilePreviewError
. - New configuration property added:
maxFilesCount
. Defaults to0
which means unlimited. - (enh #16, #17): Added exception handling for trapping FileReader API errors
version 2.0.0 ¶
Date: 25-Jul-2014
- Added delimiter option for
initialPreview
to pass multiple content delimited as a string.
- Correct calculation of files selected when
initPreview
is false. - Make caption text configurable through a new parameter
msgSelected
. - Enhanced configurable templates for previewing image, text, and other files (and a generic template).
- New plugin methods added:
disable
,enable
- New plugin events added:
fileerror
,fileloaded
,filecleared
. - (enh #15): Enhanced validation of file size through
maxFileSize
configuration. - (enh #12, #13, #14): Various enhancements and fixes.
version 1.9.0 ¶
Date: 21-Jul-2014
- (enh #10): Ability to display initial caption, when initialPreview is false.
- (enh #9): Enhanced caption template and styling for captions to prevent overflow of long file names out of the caption container.
version 1.8.0 ¶
Date: 15-Jul-2014
- (enh #9): Enhanced caption template and styling for captions to prevent overflow of long file names out of the caption container.
version 1.7.0 ¶
Date: 02-Jul-2014
- The plugin now offers an additional
overwriteInitial
option. This is by default set totrue
, whereby, anyinitialPreview
content set will be overwritten, when new file is uploaded or when files are cleared. Setting it tofalse
will help displaying a saved image or file from database always - useful especially when using themultiple
file upload feature.
version 1.6.0 ¶
Date: 03-Jun-2014
- The plugin now offers an additional
refresh
method. This enables you to dynamically change element attributes or plugin options at runtime and refresh the widget.
version 1.5.0 ¶
Date: 23-May-2014
- The plugin now offers an option to display initial preview of images/text/other files. This is useful for record update scenarios. This can be a single image/file or an array of images/files.
- Extending to the above feature, the plugin also allows you to set a preview caption for the initial preview field.
- The following element identifiers need to be passed as a string like '#id' instead of a JQuery object:
- elCaptionContainer
- elCaptionText
- elPreviewContainer
- elPreviewImage
- elPreviewStatus
version 1.0.0 ¶
Date: 01-Jan-2014
Initial release. The following features are included in this release:
- The plugin will convert a simple HTML file input to an advanced file picker control. Will help fallback to a file input for browsers not supporting JQuery or Javascript.
- The file input consists of the following three sections with options and templates to control the display:
- file caption section: to display a brief information of the file(s) selected
- file action buttons section: to browse, remove, and upload files.
- file preview section: to display the selected files on client for preview (supports images and text file types). Other file types will be displayed as normal thumbnails.
- The plugin automatically converts an input with
type = file
to an advanced file picker input if you set itsclass = file
. All options to the input can be passed as HTML5data
attributes. - Ability to select and preview multiple files. Uses HTML 5 File reader API to read and preview files. Displays the progress of files being being loaded onto the preview zone, in case many files are chosen.
- Offers predefined templates and CSS classes which can be changed to style your file-input display as per your needs.
- Option to show/hide any or all of the following:
- caption section
- preview section
- upload button
- remove button
- Customise the location of the target container elements to display the entire plugin, the caption container, the caption text, the preview container, preview image, and preview status.
- For text file previews, autowrap the text to the thumbnail width, and show a wrap indicator link to display complete text on hover. You can customize the wrap indicator (which defaults to …).
- Customise the messages for preview, progress, and files selected.
- Upload action defaults to form submit. Supports an upload route/server action parameter for custom ajax based upload.
- Triggers JQuery events for advanced development. Events currently available are
filereset
andfileclear
. - Disabled and readonly file input support.
- Size of the entire plugin is less than 11KB (about 9KB for the minified JS and 2KB for the minified CSS).


@(formText: String) @main("Search For a Company") { } {
Search a company by its ticker to see its financials.


Our Vision & Mission
Introducing all special NATURAL, ARCHIOLOGICAL & ANCIENT sites and cultures of JORDAN, and make our customers feel the astonishing beauty of wonderfull JORDAN.
JOWonders seeks to provide the most unique trips. And aims to meet customers requirments efficiently and on high levels. The main goal is to make you feel satisfied, happy & enjoy exploring the wonder of JORDAN.


Hey there! I'm Carolyn. I am a Full Stack MERN Software Engineer. I have a BA in Business from the University of St. Thomas, but wanted to continue to make myself competitive in an ever changing market. I really enjoy building things on the computer and seeing my work progress. I am always up for a challenge and thrive under pressure.
My hope is to find work that utilizes my new found skill set in programming and my years of customer service that have helped make me a flexible individual, with great communication skills, and a creative problem solver.